我在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/

10-16 23:17