как передать columname как params с помощью функции read_sql_query для панд - PullRequest
0 голосов
/ 15 февраля 2019

Я пишу SQL-запрос, в котором я хочу передать условие WHERE с параметрами в pandas.read_sql_query.Это прекрасно работает для значения, но я сталкиваюсь с проблемами с переменной.Мой обходной путь - конкатенация строки, которую я передаю пандам, но мне не нравится видеть мой код так.Я уже выяснил, что имя столбца таблицы написано неправильно.Например, «colname» вместо «colname».

Я написал sql в виде строки:


command=("SELECT * FROM review r "
                     "WHERE 1=1  " 
                     "AND "+selected_var+"= "+selected_val
                     )

И затем я передал его пандам


self.reviews = pd.read_sql_query(command, con = self.cnxn)

Но яЯ хотел бы включить его без обходного пути.


import pandas as pd
import mysql.connector

self.reviews = pd.read_sql_query("""
   SELECT *
   FROM review r
   WHERE 1=1
      AND  %(sel_var)s  = %(sel_val)s;
 """, con = self.cnxn, params = {'sel_var': selected_var,
                                 'sel_val': selected_val
  })

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

1 Ответ

0 голосов
/ 15 февраля 2019

А как насчет форматирования строки?

input_params = {'sel_var': selected_var,
                'sel_val': selected_val}

self.reviews = pd.read_sql_query(""" SELECT * FROM review r WHERE 1=1 
                                     AND {sel_var}={sel_val};""".format(**input_params), 
                                 con = self.cnxn)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...