使用更改键和参数化 MySQL 查询迭代 JSON



我想迭代加载的json文件更改键。不同的json文件都有相同的结构,但有时键+值被添加/不存在:

...
{
"kind": "something",
"data": {
"created": Unix-Timestamp,
"changed": Unix-Timestamp,
"comment": "Comment",
"author": "Le-Moi",
"stuff": false,
...

我使用:

json_objects = len(json_loaded['data']['children'])
for objects in range(json_objects):
try:
created = json_value['data']['created']
except:
created = 0
...

但是必须有一个"simpler"避免在不存在的键+值上出错的方法....?特别是因为在json文件中有大约120个键,我想导入到mysql数据库。

另外,我想在使用mysql.connectorfor python的准备好的参数化sql查询中使用这些值。直到现在我才知道:insert_command = "INSERT INTO mytable (column1, column2) VALUES ('%s', %s)",并使用python-list添加参数。

编辑:我设法创建了一个动态查询,其中键和值是通过字符串加法加起来的(感谢Sravani S ->tutorialspoint.com/How-do-I-loop-through-a-JSON-file-with-multiple-keys-sub-keys-in-Python):

for (k, v) in json_loaded['data']['children'][k]['data'].items():
keys += str(k) + ", "
if type(v) is str:
v = "'" + v + "'"
values += str(v) + ", "
keys = keys[:-2]
values = values[:-2]
...

,但现在我得到以下错误:mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '[{'e': 'text', 't': 'Resource'}], ...由字典值(?)引起。是否可以插入那么长的字符串"通过我准备好的查询?

我设法以一种"肮脏的"方式解决了我的问题。道路首先,我试图将我的单元输入转换为二进制字符串,但这并不是真正的权宜之计……我的解决方案是使用xxx.replace("'", "`")函数替换所有转义字符。

最新更新