我用pyodbc查詢到SQL Server數據庫SQL操作中使用pyodbc和SQL Server
import datetime
import pyodbc
conn = pyodbc.connect("Driver={SQL Server};Server='dbserver',Database='db',
TrustedConnection=Yes")
cursor = conn.cursor()
ratings = ("PG-13", "PG", "G")
st_dt = datetime(2010, 1, 1)
end_dt = datetime(2010, 12, 31)
cursor.execute("""Select title, director, producer From movies
Where rating In ? And release_dt Between ? And ?""",
ratings, str(st_dt), str(end_dt))
,但我收到以下錯誤。是否需要以不同的方式處理元組參數?有沒有更好的方法來構造這個查詢?
('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Line 9:
Incorrect syntax near '@P1'. (170) (SQLExecDirectW);
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]
Statement(s) could not be prepared. (8180)")
UPDATE:
我能得到這個查詢使用字符串格式化操作,因爲它會導致安全問題這是不理想的工作。
import datetime
import pyodbc
conn = pyodbc.connect("Driver={SQL Server};Server='dbserver',Database='db',
TrustedConnection=Yes")
cursor = conn.cursor()
ratings = ("PG-13", "PG", "G")
st_dt = datetime(2010, 1, 1)
end_dt = datetime(2010, 12, 31)
cursor.execute("""Select title, director, producer From movies
Where rating In %s And release_dt Between '%s' And '%s'""" %
(ratings, st_dt, end_dt))
我m仍然收到第一個參數的「語法錯誤」錯誤。 pyodbc可以將列表視爲字符串而不是列表嗎? – user338714 2011-01-27 21:54:57
它的放在整個字符串周圍,看我的編輯 – WombatPM 2011-01-27 22:30:35