簡體   English   中英

使用 pyhon 的動態 sql 查詢形成

[英]dynamic sql query formation using pyhon

我是 python 的新手,想在 python 中動態形成 SQL 查詢。所以嘗試了以下示例代碼:

empId = 12

query = ''' select  name, ''' +
if empId > 10:
    '''basic_salary'''
else:
    ''' bonus'''
+ ''' from employee '''

print(query)

但是,出現語法錯誤。 有誰知道如何在 python 中形成動態查詢。

您需要指示查詢的分配在下一行繼續,您可以在行尾使用\來執行此操作。 此外,您需要將if語句編寫為內聯if表達式,因為在賦值語句的中間不能有if語句:

empId = 12

query = ''' select  name, ''' + \
        ('''basic_salary''' if empId > 10 else ''' bonus''') + \
        ''' from employee '''

print(query)

Output:

select  name, basic_salary from employee 

如果您有多個條件,您可以在條件中添加到query 例如:

empId = 6

query = 'select name, '
if empId > 10:
    query += 'basic_salary'
elif empId > 5:
    query += 'benefits'
else:
    query += 'bonus'
query += ' from employee'

print(query)

Output

select name, benefits from employee

#dynamic sql 使用 python 查詢形成#這適用於 PostgresSQL,您也可以將其用於其他查詢:

def updateQuery(self,tableName,setFields,setValues,whereFields,whereValues): print("開始生成更新查詢")

querySetfields = None
queryWhereFields = None

# Loop for set fields
for i in range(len(setFields)):
    if querySetfields is None:
        querySetfields=setFields[i]+"='"+setValues[i]+"'"
    else:
        querySetfields=querySetfields+","+setFields[i]+"='"+setValues[i]+"'"

# Loop for whereFields
for i in range(len(whereFields)):
    if queryWhereFields is None:
        queryWhereFields=whereFields[i]+"='"+whereValues[i]+"'"
    else:
        queryWhereFields=queryWhereFields+","+whereFields[i]+"='"+whereValues[i]+"'"

#Form the complete update query
query="UPDATE "+tableName+" SET "+querySetfields+" WHERE "+queryWhereFields

print("Generating update query completed")

return query

print(updateQuery(None,"EMPLOYEE_DETAILS",["EMPI_ID","EMP_LANID","EMP_NAME","EMP_EMAIL"],["A","B","C"],["EMPI_ID","EMP_LANID" ],["X","Y","Z"]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM