pyodb c - прохождение параметров - PullRequest
0 голосов
/ 06 марта 2020

Хорошо, я перепробовал все возможные ситуации с SO, и ничего из этого не сделало.

У меня проблема с вызовом сохраненного запроса, требующего передачи 4 параметров (речь идет о базе данных доступа), и у меня есть простой код:

params = ()
sql_saldo = "{CALL KUP_BalansKupDosp(204701,0,#3/5/2020#,0)}"
saldo = cursor.execute(sql_saldo)
for row in saldo.fetchall():
    print(row)

Это работает!

Но так как мне нужны эти параметры, чтобы быть динамическими c, при попытке:

params = ('204701','0,#3/5/2020#','0')
sql_saldo = "{CALL KUP_BalansKupDosp(?,?,?,?)}"
saldo = cursor.execute(sql_saldo, params)
for row in saldo.fetchall():
    print(row)

я получаю ошибку Data type mismatch in criteria expression

Это оригинальное определение параметра PARAMETERS InKupID Long, InSekID Long, InDatum DateTime, InToler Currency = 1; Так что требуется, строка, строка, дата и время, и я полагаю. Поэтому, когда я пытаюсь с:

today_row = date.today()
today = today_row.strftime("%d/%m/%Y")
params = (204701,0,today,0)
sql_saldo = "{CALL KUP_BalansKupDosp(?,?,?,?)}"
saldo = cursor.execute(sql_saldo, params)
for row in saldo.fetchall():
    print(row)

, я также получаю ту же ошибку, я даже пробовал с каждым возможным комбо, и я просто не могу понять это.

PS. Мое соединение работает отлично, так как у меня есть еще 10 запросов, кроме этого.

У кого-то была похожая проблема?

1 Ответ

0 голосов
/ 06 марта 2020

Мне удается решить это с помощью:

params = (204701, 0, today, 0)
sql_saldo = "{CALL KUP_BalansKupDosp(%s,%s,%s,%s)}" % params
saldo = cursor.execute(sql_saldo)
for row in saldo.fetchall():
    print(row)
...