[英]Executing SQL with “ ” from Python
由於選擇中的“”,我無法從Python執行SQL語句。 我想我已經嘗試了每種組合,但無法弄清楚。 你能幫我么?
cnxn = pyodbc.connect("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=c:\\python33\salesdb.mdb")
cursor = cnxn.cursor()
v_sql = "SELECT DISTINCT tblSeller.ID, tblSeller.Navn FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID WHERE (((tblSeller.Name)="Robert Smith" ))"
cursor.execute(v_sql)
問題在於SQL中的Robert Smith。
您將轉義引號或使用其他引號樣式。 例如,單引號將在此處執行。
使用單引號:
v_sql = 'SELECT DISTINCT tblSeller.ID, tblSeller.Navn FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID WHERE (((tblSeller.Name)="Robert Smith" ))'
使用轉義:
v_sql = "SELECT DISTINCT tblSeller.ID, tblSeller.Navn FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID WHERE (((tblSeller.Name)=\"Robert Smith\" ))"
或者,您可以使用三重引號( '''
或"""
);由於允許使用換行符並將其包含在最終的字符串值中,因此這些引號允許使用簡單的多行字符串:
v_sql = """
SELECT DISTINCT tblSeller.ID, tblSeller.Navn
FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID
WHERE (((tblSeller.Name)=\"Robert Smith\" ))
"""
嘗試混合使用單引號:
v_sql = "SELECT DISTINCT tblSeller.ID, tblSeller.Navn FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID WHERE (((tblSeller.Name)='Robert Smith' ))"
要么
v_sql = 'SELECT DISTINCT tblSeller.ID, tblSeller.Navn FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID WHERE (((tblSeller.Name)="Robert Smith" ))'
在python中,字符串可以用雙引號"
或單引號"
引起'
,這在這些情況下非常有用。
在Python中,你可以使用創建的字符串'
或"
其他說。
但是在這種情況下,我想建議使用PreparedStatement而不是簡單查詢。 這樣的PreparedStatement用途是?
代替參數,參數只是數組:
v_sql = "SELECT DISTINCT tblSeller.ID, tblSeller.Navn FROM tblResult INNER JOIN tblSeller ON tblResult.SellerID = tblSeller.ID WHERE (((tblSeller.Name)=?))"
rs = c.execute(v_sql, ["Robert Smith", ])
PreparedStatement具有許多優點:數據庫引擎可以更輕松地解析它們並緩存查詢計划,它們可以安全地進行SQLInjection攻擊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.