2013-09-25 29 views
1

我想在python中將字典a = {'key': 602L}插入到DB中。它不允許我插入它,因爲quotes'' in key在python中插入數據庫

這裏是我的查詢

self.__db_conn.cursor.execute("INSERT INTO TABLE VALUES ('%s')" % (str(a))) 

如果我嘗試手動插入(不帶引號),它的工作。

self.__db_conn.cursor.execute("INSERT INTO TABLE VALUES ('%s')" % ("{key: 602L}")) 

注意鍵中缺少的引號。

如何在表格中插入字典?

+0

爲什麼要存儲的字典這樣到數據庫?有疑問:序列化或反序列化使用JSON字典和字符串,但不是這樣。 –

+0

閱讀:http://stackoverflow.com/questions/8519599/python-dictionary-to-string-custom-format –

回答

2

序列化JSON

self.__db_conn.cursor.execute("INSERT INTO TABLE VALUES ('%s')" % json.dumps(your_dict) 

反序列化JSON從

row = db.conn.fetchone(.....) 
your_dict = json.loads(row[...]) 
+0

像魅力一樣工作。謝謝。 – PythonEnthusiast

+0

你知道爲什麼'str(a)'不起作用嗎? –

+0

@GrijeshChauhan - 是的,我以前就知道。有關完整的解釋,請參閱另一個答案。 – PythonEnthusiast

1

str(a)"{'key': 602L}"。將其替換爲SQL語句給出:

INSERT INTO TABLE VALUES ('{'key': 602L}') 

請注意單引號的不匹配。看看逃避單引號。

編輯

如前所述user2799617,你可以嘗試以下方法:

import json 
a_json = json.dumps(str(a)) 
self.__db_conn.cursor.execute("INSERT INTO TABLE VALUES ('%s')" % a_json) 

當你的價值從數據庫返回的,你可以使用json.loads

+0

雅阿我知道。這是我的擔憂。如何在數據庫中存儲帶有引號的完整詞典? – PythonEnthusiast

+0

請閱讀答案,並將您的字典從JSON中分離/反序列化。 –