最近在做Python項目的時候遇到一個要向數據庫中插入歷史記錄的一個問題,需要將行List數據存到數據庫中。我是使用SQList創建的數據庫文件和對應的Table,但在python使用SQL語句時老是在插入的第一個元素那里報錯。觀察了SQL的插入語句才發現問題在哪里。。。
首先看SQL語句的插入操作:INSERT INTO TableName VALUES(value1,value2,…)
然后在python中為了方便操作,我寫了一個函數來實現:
def write(self, table, data):
query = "INSERT INTO {0} VALUES({1});".format(table, data)
self.cursor.execute(query)
開始我就直接把我要插入的內容傳給data,然后向數據庫中名為table的表進行插入。結果就一直在插入的第一個元素那里報錯
后來我發現我插入的內容都是str類型的,在SQLVALUES(value1,value2,…)
中value的值如果是int可以直接寫變量的名字,但是如果是字符串那需要用單引號括起來‘value2’。我開始是將我輸入的List直接使用逗號連接了一下','.join(List)
,但是沒有給每個元素加單引號,所以傳到SQL里就是錯誤的語法。。最后我將List里每個元素都加了單引號就OK了!