2017-09-06 21 views
1

我想通過變量幫助從sqlite3中檢索數據。這是工作的罰款與​​語句,但我想也檢索列,併爲此我使用read_sql_query()但我無法傳遞變量在read_sql_query(),請按照下面的代碼:如何在使用python的read_sql_query中插入變量

def cal(): 
    tab = ['LCOLOutput'] 
    column_name = 'CUSTOMER_EMAIL_ID' 
    xyz = '**[email protected]' 
    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

我面對這個錯誤-AndocaxError:文件D中的非ASCII字符'\ xc2':第90行的/Automation/TicketAuditDefects/exp.py,但沒有聲明編碼;詳情請參閱http://python.org/dev/peps/pep-0263/ –

+0

嗨,我仍然面臨着這個錯誤 - 「pandas.io.sql.DatabaseError:執行失敗的SQL'SELECT * FROM?where?=? ':near「?」:語法錯誤「 –

回答

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解釋爲什麼表不能是: 具有以下格式爲表或嘗試直接作爲參數傳遞。

+0

嗨PRMoureu,我面臨這個錯誤」pandas.io.sql.DatabaseError:執行失敗的SQL'SELECT * FROM?where?=?':near「?」:語法錯誤「 –

+0

你可以檢查編輯的答案嗎? – PRMoureu

+0

您好PRMoureu,這是工作正常 - 「sq =」選擇*從{}其中{} = ?;「格式(表名,列名) param =(xyz,) df = pandas.read_sql_query(sq,conn, params = param)「 –

相關問題