我正嘗試使用Python創建一個DataFrame並將其寫入SQL表格。該表應以變量命名,具體來說table_name
(table_name
將隨着我的代碼運行而改變)。下面是我的代碼的相關部分嘗試此設置:使用Python創建具有變量名稱的SQL表格
con = sql.connect(r'/Users/linnk/Desktop/Results/Data.db') # Creates database to write to
cur = con.cursor()
...code...
cur.execute('''CREATE TABLE IF NOT EXISTS ''' + table_name + ''' (Date, Morning1, Day1, Evening1, Night1, Morning3, Day3, Evening3, Night3)''')
運行此給出了錯誤(最後一行):
OperationalError: near "-": syntax error
我試着做一些修改到我的代碼的最後一行,但得到類似的錯誤。任何人都可以幫我發現我的錯誤/對我的代碼進行必要的調整嗎?有關信息,table_name包含一個字符串。
非常感謝您的任何建議。
編輯/ UPDATE:
從我讀過它似乎是更明智的字符串,然後傳遞給cur.execute():
stringexecute='''\'CREATE TABLE IF NOT EXISTS '''+ table_name +''' (Date, Morning1 real, Day1 real, Evening1 real, Night1 real, Morning3 real, Day3 real, Evening3 real, Night3 real)\''''
cur.execute(stringexecute)
的信息, strictgexecute輸出:
stringexecute= 'CREATE TABLE IF NOT EXISTS GUTUR_400_F1-KIAGA-1 (Date, Morning1Ph real, Day1Ph real, Evening1Ph real, Night1Ph real, Morning3Ph real, Day3Ph real, Evening3Ph real, Night3Ph real)'
但是,該代碼仍然不起作用。它給出:
OperationalError: near "'CREATE TABLE ......'": syntax error
任何進一步的幫助將不勝感激。我主要看和(失敗)試圖從以下資源的方法: http://www.sommarskog.se/dynamic_sql.html#objectnames https://docs.python.org/2/library/sqlite3.html
編輯
原來以下工作,只要變量table_name
不包含「 - 」(可能還有其他符號):
cur.execute("CREATE TABLE IF NOT EXISTS " + table_name + " (Date, Morning1 real, Day1 real, Evening1 real, Night1 real, Morning3 real, Day3 real, Evening3 real, Night3 real)")
會發生什麼,如果你硬編碼表名? –
這似乎工作 - 這會在數據庫中創建'Table1': cur.execute('''CREATE TABLE IF NOT EXISTS Table1(Date,Morning1,Day1,Evening1,Night1,Morning3,Day3,Evening3,Night3)'' ') – LinnK
根據你最近的更新,似乎問題只是禁止的字符。你可以regex.sub執行表創建步驟之前? – James