Чтение с SQL сервера с Python с использованием нескольких параметров из DataFrame - PullRequest
0 голосов
/ 13 июля 2020

Мне нужно прочитать из SQl базы данных сервера, используя следующие параметры:

  • период времени из загруженного фрейма данных (дата заказа и дата после месяца)
  • идентификатор клиента из тот же Dataframe

Итак, у меня что-то вроде этого:

sql_sales = """
SELECT 
    dt,
    clientID, 
    cost
WHERE 
    dt between %(date1)s AND %(date2)s
    AND kod in %(client)s
""" 

И у меня df со столбцами:

  1. clientID
  2. дата заказа
  3. дата после месяца

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

sales = sales.append(pd.read_sql(sql_sales, conn, params={'client':df['clientsID].tolist()}))

1 Ответ

0 голосов
/ 13 июля 2020

Раньше я получал что-то похожее на работу: выполнял in {}, а затем использовал .format с параметрами, перечисленными в порядке. Кроме того, вам не нужно использовать аргумент params. Наконец, если вы используете IN с SQL, то в Python вам нужно создать tuple из списка клиентов. Для строки dt between {} AND {} вы также можете сделать dt between ? AND ?.

client = tuple(df['clientsID'].tolist())

sql_sales = """
SELECT 
dt,
clientID, 
cost
WHERE 
dt between {} AND {}
AND kod in {}
""".format(date1,date2,client)

sales = sales.append(pd.read_sql(sql_sales, conn))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...