【问题标题】:How do I issue a SQL query using pyodbc that involves python variables as the parameters?如何使用 pyodbc 发出包含 python 变量作为参数的 SQL 查询?
【发布时间】:2020-06-19 21:08:17
【问题描述】:

我正在编写一个程序,该程序搜索数据库并将数据输入到基于用户从两个日历中选择的 Excel 文件中(在 GUI 上)。我有一个开始和结束日期,我将这些变量作为参数传递给我的 SQL 查询的函数。

如何格式化 SQL 查询以从给定日期中选择值?

这是我目前的代码,

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)

【问题讨论】:

    标签: python sql python-3.x pyodbc


    【解决方案1】:

    在查询中使用? 作为占位符,并提供一个值元组来替代它们。

    cursor.execute('SELECT ID, BarCode, DateTm, EntryDoor FROM dbo.tab_Rolls WHERE (DateTm >= ?) AND (DateTm <= ?)', (startDate, endDate))
    

    请参阅cursor.execute()documentation 中的示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多