我有一個字典,我想將所有的值添加到sqlite數據庫。字典中的所有鍵存在於數據庫中,並且所有鍵都是字符串類型。然而,我無法將值存入數據庫。下面的代碼是醜陋的,不安全的和錯誤每當遇到一個字符串了「,但它那種工作。插入python字典到SQLite數據庫
Query="INSERT INTO packages VALUES("
for tag in Tags:
Query=Query + '"' + Package[tag] + '", '
Query=Query[:-2]+")"
cursor.execute(Query)
我怎樣才能優雅地解決這一問題,以便它是安全的,並接受輸入, 「在字符串?我遇到了其他一些方法。例如:
fields = Package.keys()
values = Package.values()
query = "INSERT INTO packages (%s) VALUES (%%s);" % (",".join(fields))
cursor.execute(query, values)
但它會拋出一個類型錯誤。
TypeError: function takes at most 2 arguments (38 given)
最優雅的解決方案,我所遇到到目前爲止似乎是
sql_insert = ('INSERT INTO packages (%s) VALUES (%s)' %
(','.join('%s' % name for name in Package),
','.join('%%(%s)s' % name for name in Package)))
cursor.execute(sql_insert, Package)
但它拋出一個運行錯誤,再一次說
sqlite3.OperationalError: near "%": syntax error
,我的問題是如何能我優雅地安全地將字典中的值添加到數據庫中?
P.S.值得注意的是,我正在使用Python 2.5.1。
廠像一個魅力。謝謝! – Trcx 2012-01-11 05:17:48
除了如果'標籤'是OP使用的字典,'標籤'只會傳遞密鑰名稱,並且它們將以任意順序排列。 – 2012-01-11 05:18:16
不幸的是,這並沒有實際的工作,因爲它創建了字段名稱作爲數據值的數據庫條目。我認爲它正在工作,因爲這個腳本運行時沒有發生錯誤,如果我今天早上看數據庫(讓它在一夜之間運行),它沒有合適的值。 – Trcx 2012-01-11 14:35:55