Как динамически связать несколько параметров 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)
Другие вопросы по тегам