Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将字典行插入数据库_Python - Fatal编程技术网

Python 将字典行插入数据库

Python 将字典行插入数据库,python,Python,示例_表具有id(int)自动递增,json_col(text) 这是我想插入字典行的example\u表中的示例记录 +----+----------------------------------------------+ | id | json_col | +----+----------------------------------------------+ | 1 | {"NO":"

示例_表
具有id(int)自动递增,json_col(text)

这是我想插入字典行的
example\u表中的示例记录

+----+----------------------------------------------+
| id |                   json_col                   |
+----+----------------------------------------------+
|  1 | {"NO":"1","NIM":"4313010001","NAME":"BENJI"} |
|  2 | {"NO":"2","NIM":"4313010002","NAME":"KENJI"} |
|  3 | {"NO":"3","NIM":"4313010003","NAME":"RYUJI"} |
+----+----------------------------------------------+
这是python脚本中的字典数组

dict_result =
[{'NIM': '4313010013','NAME': 'YUKA','STATUS': 'PASSED'},
 {'NIM': '4313010008','NAME': 'YUKO','STATUS': 'PASSED'},
 {'NIM': '4313010017','NAME': 'YUKI','STATUS': 'PASSED'}]
我正试图像上面的示例记录一样,将它们分别插入到
example\u表中。我就是这么做的,我试着把它转换成一个字符串,也许它可以传递行,就像上面的示例记录一样,但它引发了一个错误,说
ProgrammingError:(1064,“您的SQL语法有错误;请检查与您的MariaDB服务器版本相对应的手册,以了解在第1行的“NIM”:“4313010013”,“NAME”:“YUKA”,“STATUS”:“PASSED”})”附近使用的正确语法”)

我读过其他问题,但在其他情况下,它会将字典变成列,在我的情况下,我想插入它,因为它就像一个json。我应该怎么做

已解决 在Danya02的评论和添加信息的帮助下,这一行解决了问题

for i in dict_hasil:
    x = str(i)
    cursor.execute("""INSERT INTO example_table (json_col) values ("{x}")""".format(x=x))

conn.commit()

发生这种情况是因为您试图将数据放入SQL命令中,但周围没有引号。直接的问题可以通过编写
“{x}”
而不是
{x}
来解决

但是,这样做是一个糟糕的想法,因为这是一个等待发生的过程。要解决这个问题,您不需要将要插入数据库的数据直接放在查询字符串中,而是使用查询参数:

cursor.execute(“插入mydata(fieldA,fieldB)值(?,)”,(“邪恶”,“数据”))

你是正确的,为了将字典放入数据库行,你需要使用JSON或类似的东西对它进行编码。你可以查看其他答案,看看如何执行或,但一旦得到,你就会得到一个字符串,你可以将其插入数据库,如上图所示。

发生这种情况是因为你试图将数据放入SQ不带引号的L命令。直接的问题可以通过编写
“{x}”
而不是
{x}
来解决

但是,这样做是一个糟糕的想法,因为这是一个等待发生的过程。要解决这个问题,您不需要将要插入数据库的数据直接放在查询字符串中,而是使用查询参数:

cursor.execute(“插入mydata(fieldA,fieldB)值(?,)”,(“邪恶”,“数据”))

正确的做法是,为了将字典放入数据库行中,需要使用JSON或类似的方法对其进行编码。您可以查看其他答案以了解如何执行或,但一旦获得该答案,您将得到一个字符串,您可以将其插入数据库中,如上图所示。

表的架构是什么?示例_表具有id(int)自动递增,json_col(text)尝试在
{x}
之间添加双引号?这可能只是添加了双引号,不是100%确定。它不起作用的原因是您需要在值周围加引号。您好,在
{x}中写入“{x}”而不是“{x}”导致
语法错误:无效“
。别担心,我犯了一个错误,它还应该使用
“”“
或sql语句。但是这些行没有进入数据库tho..请记住,这里没有使用JSON。您使用的是
dict
的字符串表示形式,这不一定是不使用
eval
或类似方法就可以解析回Python对象的东西。如果您使用
json.dumps
json.loads
,您将在读取放回数据库的数据时避免许多问题。您的表的架构是什么?示例\u表的id(int)自动递增,json\u col(text)尝试在
{x}
之间添加双引号?这可能只是把它加进去,不是100%确定。它不起作用的原因是因为您需要在值周围引用。您好,将{x}改为{x}导致
语法错误:在
中{x}的语法无效。别担心,我犯了一个错误,它还应该使用
“”“
或sql语句。但是这些行没有进入数据库tho..请记住,这里没有使用JSON。您使用的是
dict
的字符串表示形式,这不一定是不使用
eval
或类似方法就可以解析回Python对象的东西。如果您使用
json.dumps
json.loads
,您将在读取放回数据库的数据时避免许多问题。您好,在
中写入“{x}”而不是“{x}”导致
语法错误:无效语法
中的“{x}”
。不过,我犯了一个错误,它还应该使用
“”“
或sql语句。但是行没有进入数据库tho..那是因为sql行本身被括在“双引号”中无论如何,你甚至不应该试图让它这样运作,因为这是一个痛苦和不安全的世界。至少,如果您决定使用JSON,它也会使用双引号,因此它会导致与您现在看到的相同的错误,除了在SQL代码中。哦,我明白了,但是写“{x}”而不是“{x}导致的语法错误:{x}中的语法无效。我之所以选择json,是因为列总是在变化,通过json,我不需要创建不断变化的列,这是我学校的最后一个项目,我真的不需要让它安全,你可能会感兴趣。它是一个将数据存储为JSON文档的数据库,因此您可以在其中包含许多不同字段的不同对象,因此您不必事先决定模式。我已经解决了这个问题,我刚刚发现我需要调用提交函数。另外,对sql语句使用
加上“{x}”是正确的。嗨,写“{x}”而不是“{x}”引起的
语法错误:在
“{x}”中无效语法。不过,我犯了一个错误,它也应该使用
或sql语句。但是争吵并没有引起注意
for i in dict_hasil:
    x = str(i)
    cursor.execute("""INSERT INTO example_table (json_col) values ("{x}")""".format(x=x))

conn.commit()