如何使用涉及 python 变量作为参数的 pyodbc 发出 SQL 查询?
How do I issue a SQL query using pyodbc that involves python variables as the parameters?
我正在编写一个程序,用于搜索数据库并将数据输入 excel 文件,该文件基于来自两个日历(在 GUI 上)的用户 selection。我有一个开始和结束日期,我将这些变量作为参数传递到我的 SQL 查询的函数中。
如何将 SQL 查询格式化为 select 给定日期的值?
到目前为止,这是我的代码,
def load_database(startDate, endDate):
conn = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
'Server=DESKTOP-KVR7GNJ\SQLBULKROLL;'
'Database=db_MasterRoll;'
'UID=sa;'
'PWD=Z28@6420d')
wb = Workbook()
ws = wb.active
ws.title = "Star Ledger"
cursor = conn.cursor()
cursor.execute('SELECT ID, BarCode, DateTm, EntryDoor FROM dbo.tab_Rolls WHERE (DateTm >= @startDate) AND (DateTm <= @endDate)')
按钮通过 运行 函数 "call_db_code()":
调用此代码
def call_db_code():
firstDate = start_dateCalendar.selection_get()
print(firstDate)
finalDate = end_dateCalendar.selection_get()
print(finalDate)
load_database(firstDate, finalDate)
在查询中使用 ?
作为占位符,并提供一个值元组来替代它们。
cursor.execute('SELECT ID, BarCode, DateTm, EntryDoor FROM dbo.tab_Rolls WHERE (DateTm >= ?) AND (DateTm <= ?)', (startDate, endDate))
请参阅 cursor.execute()
documentation 中的示例。
我正在编写一个程序,用于搜索数据库并将数据输入 excel 文件,该文件基于来自两个日历(在 GUI 上)的用户 selection。我有一个开始和结束日期,我将这些变量作为参数传递到我的 SQL 查询的函数中。
如何将 SQL 查询格式化为 select 给定日期的值?
到目前为止,这是我的代码,
def load_database(startDate, endDate):
conn = pyodbc.connect('Driver={ODBC Driver 17 for SQL Server};'
'Server=DESKTOP-KVR7GNJ\SQLBULKROLL;'
'Database=db_MasterRoll;'
'UID=sa;'
'PWD=Z28@6420d')
wb = Workbook()
ws = wb.active
ws.title = "Star Ledger"
cursor = conn.cursor()
cursor.execute('SELECT ID, BarCode, DateTm, EntryDoor FROM dbo.tab_Rolls WHERE (DateTm >= @startDate) AND (DateTm <= @endDate)')
按钮通过 运行 函数 "call_db_code()":
调用此代码def call_db_code():
firstDate = start_dateCalendar.selection_get()
print(firstDate)
finalDate = end_dateCalendar.selection_get()
print(finalDate)
load_database(firstDate, finalDate)
在查询中使用 ?
作为占位符,并提供一个值元组来替代它们。
cursor.execute('SELECT ID, BarCode, DateTm, EntryDoor FROM dbo.tab_Rolls WHERE (DateTm >= ?) AND (DateTm <= ?)', (startDate, endDate))
请参阅 cursor.execute()
documentation 中的示例。