Psycopg2 - SQL скрипт, не возвращающий вывод - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь передать несколько аргументов как переменную в сценарий SQL, но у меня возникают проблемы с возвратом вывода.

Ниже приведен мой код:

start_date = '2020-03-01'
end_date = '2020-03-02'

I передать их в приведенный ниже запрос

cursor.execute('select bill_number from table 
                where created_at between {} and {}'.format(start_date, end_date))

Выше не возвращает вывод, но я знаю, что существуют данные для этого SQL script

1 Ответ

1 голос
/ 10 марта 2020

После выполнения запроса вам нужно получить результаты:

records = cursor.fetchall()

очень важно , что вы не используете format для SQL запросов, так как они подвержены атакам SQL; вместо этого используйте:

query = "select bill_number from table where created_at between %s and %s"
cursor.execute(query, (start_date, end_date))
records = cursor.fetchall()

Если вы хотите добавить фильтры, вам просто нужно настроить запрос и добавить параметр:

query = "select bill_number from table where created_at between %s and %s and product=%s"
cursor.execute(query, (start_date, end_date, product))

Чтобы использовать список в качестве параметра, вы можете использовать IN и tuple:

>>> query = "select * from clients where added between %s and %s and score in %s"
>>> data = ('2019-01-01', '2020-03-01', tuple([1,2,3]))
>>> cursor.execute(query, data)
>>> rows = cursor.fetchall()
>>> len(rows)
32
>>> 

Обязательно прочитайте документы , поскольку они содержат много ценной информации.

...