Как динамически связать несколько параметров SQL-запроса в Python?
Итак, у меня есть стол (скажем, table_name
) и это столбцы:
| A | B | C |
------------------------
| a1 | b1 | c1 |
| a2 | b2 | c2 |
...
Теперь я должен прочитать данные столбца, используя следующий запрос:
import pandas as pd
import pymysql as pycon
con = pycon.connect(host='localhost',user='root',password='', db='database')
#Error in here
df= pd.read_sql_query("SELECT A from table_name where B = %s and C != %s" %variableB %variableC, con)
Но я столкнулся с ошибкой в read_sql_query(...)
возможно, формат запроса неправильный, потому что динамически связанный одиночный параметр работает нормально, т.е.
df= pd.read_sql_query("SELECT A from table_name where B = %s" %variableB, con)
работает без ошибок. Может кто-нибудь помочь мне с запросом?
2 ответа
В случае, если кто-то столкнулся с той же проблемой, правильный код для запроса был с '%s'
вместо %s
df= pd.read_sql_query("SELECT A from table_name where B = '%s' and C != '%s'" % (variableB, variableC), con)
код ниже дал мне pymysql.err.InternalError.
df= pd.read_sql_query("SELECT A from table_name where B = %s and C != %s" % (variableB, variableC), con)
Спасибо, стек Переполнение:)
Когда вы связываете несколько переменных в String, синтаксис должен быть таким
df= pd.read_sql_query("SELECT A from table_name where B = %s and C != %s" % (variableB, variableC), con)