我在Python 3.7中有以下代码可以正常工作-应该将JSON对象保存在MySql数据库中:
jsonSerialized = json.dumps('{"k":"some data","l":"some data2"}')
cursor.execute('INSERT INTO messages (message) VALUES ('+jsonSerialized+')') #It works
结果为
{"k":"some data","l":"some data2"}
。但是以下代码将JSON保存在数据库中而没有双引号:
jsonObject = {"k":"some data","l":"some data2"}
jsonSerialized = json.dumps('%s'%jsonObject)
cursor.execute('INSERT INTO messages (message) VALUES ('+jsonSerialized+')') #It doesn't work
结果是
{'k': 'some data', 'l': 'some data2'}
,它丢失了双引号和JSON格式。我将从另一个进程中接收jsonObject,我希望它在数据库中具有良好的格式。
我究竟做错了什么?
最佳答案
您不需要两次编码为JSON,只需要使用正确的cursor.execute()
语法来替换参数。
jsonSerialized = json.dumps(jsonObject)
cursor.execute('INSERT INTO messages (message) VALUES (%s)', (jsonSerialized,))
关于mysql - 在Python中保存MySql时,JSON会丢失双引号。怎么解决呢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59461722/