Как выполнить запрос SQL с использованием pyodb c, в котором в качестве параметров используются переменные python? - PullRequest
0 голосов
/ 20 июня 2020

Я пишу программу, которая ищет в базе данных и вводит данные в файл 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)

1 Ответ

1 голос
/ 20 июня 2020

Используйте ? в качестве заполнителей в запросе и укажите кортеж значений для их замены.

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

См. Примеры в документации cursor.execute() .

...