【发布时间】:2020-12-28 15:53:54
【问题描述】:
我目前在使用 python 插入 MYSQL DB 时遇到问题。下面的执行语句没有运行,这是我使用 print stmts 发现的。
这对我来说是个谜,因为在使用相同的代码时,我的朋友可以插入到他们的数据库中(当然使用适当的 mysql 主机、密码等以及相同的 mysql 和 python 版本)
mycursor.execute("""
INSERT INTO emailcontent (Subject, Date, Sender, Sendee, Message_body)
VALUES (%(Subject)s, %(Date)s, %(Sender)s, %(To)s, %(Message_body)s)
""", temp_dict)
mydb.commit()
temp_dict 示例数据:
{'Subject': 'Security alert', 'Date': '2020-12-28', 'Sender': 'Google <no-reply@accounts.google.com>', 'Snippet': 'Quickstart was granted access to your Google Account sometestemail@gmail.com If you did not grant access, you should check this activity and secure your account. Check activity You can also see security',
'To': 'sometestemail@gmail.com'}
其他代码:
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="root",
database="database"
)
mycursor = mydb.cursor()
版本
Python 3.9.1
mysql 8.0.22
mysql-connector 2.2.9
【问题讨论】:
-
您声明查询“未运行”,但未发布回溯。你能用遇到的任何和所有异常来更新你的问题吗?最好注意您正在使用哪个 mysql 客户端 python 库(带有版本)。同时,您会发现用户@furicle 对此问题的回答很有帮助:stackoverflow.com/questions/9336270/…
-
您以错误的方式使用python字符串格式请尝试
mycursor.execute(""" INSERT INTO emailcontent (Subject, Date, Sender, Sendee, Message_body) VALUES ({Subject}, {Date}, {Sender}, {Sendee}, {Message_body}) """.format(Subject: temp_dict["Subject"], Date: temp_dict["Date"])) mydb.commit()并以类似方式写入剩余值 -
@SanthoshReddy OP 正在使用正确的语法。您应该从不对 SQL 查询中的值使用字符串格式。
-
知道了,我们必须在执行查询中给出值列表
标签: python mysql python-3.x