我试图在变量的帮助下从sqlite3中检索数据。它与execute()
语句一致正常,但我也想检索列,为此我使用read_sql_query()
但我无法在read_sql_query()
中传递变量,请按照以下代码:
def cal():
tab = ['LCOLOutput']
column_name = 'CUSTOMER_EMAIL_ID'
xyz = '**AVarma1@ra.rockwell.com'
for index, m in enumerate(tab):
table_name = m
sq = "SELECT * FROM ? where ?=?;" , (table_name, column_name, xyz,)
df = pandas.read_sql_query(sq,conn)
writer =
pandas.ExcelWriter('D:\pandas_simple.xlsx',engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1')
writer.save()
答案 0 :(得分:2)
您需要使用read_sql_query()
中的pandas
方法更改语法,请检查doc。
对于sqlite,它应该适用于:
sq = "SELECT * FROM ? where ?=?;"
param = (table_name, column_name, xyz,)
df = pandas.read_sql_query(sq,conn, params=param)
编辑: 否则请尝试使用表格的以下格式:
sq = "SELECT * FROM {} where ?=?;".format(table_name)
param = (column_name, xyz,)
df = pandas.read_sql_query(sq,conn, params=param)
检查此answer,解释为什么表不能直接作为参数传递。