[英]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.