无法使用 MySQL 在 python 中插入单列值
Posted
技术标签:
【中文标题】无法使用 MySQL 在 python 中插入单列值【英文标题】:Can't insert single column value in python using MySQL 【发布时间】:2017-05-09 14:39:57 【问题描述】:我有一个单列表。我需要在此列中插入值。该程序运行正确,没有错误。但是当我检查数据库时,没有插入任何内容。当我在代码和表格中添加另一列时,程序会正确插入数据。你能告诉我如何为单列表插入数据吗? 这是不向表中插入任何内容的单列代码。
import mysqldb
conn = MySQLdb.connect(host= "localhost",
user="root",
passwd="123",
db="dbname")
cursor = conn.cursor()
x=100
try:
sql="""INSERT INTO table (col1) VALUES ('%s')"""
cursor.execute(sql, (x))
conn.commit()
except:
conn.rollback()
conn.close()
这是两列代码。
import MySQLdb
conn = MySQLdb.connect(host= "localhost",
user="root",
passwd="123",
db="dbname")
cursor = conn.cursor()
x=100
y=2
try:
sql="""INSERT INTO table (col1,col2) VALUES ('%s','%s')"""
cursor.execute(sql, (x,y))
conn.commit()
except:
conn.rollback()
conn.close()
【问题讨论】:
【参考方案1】:试试这个:
sql="""INSERT INTO table (col1) VALUES ();""".format(x)
cursor.execute(sql)
【讨论】:
请不要忘记解释/评论您的代码,并提供相关文档[来自评论] 请避免纯代码回答。尝试解释您的代码如何解决 OP 的问题。发现这个问题的其他人可能没有你那么有经验;帮助他们了解您的解决方案。 此策略也是等待发生的 sql 注入(尽管在这种特殊情况下,您可能首先会遇到 sql 语法错误)。【参考方案2】:您可以尝试以下任何一种:
-
不要用
'%s'
,你可以用?
代替
不要使用'%s'
,而是使用不带引号的%s
【讨论】:
【参考方案3】:你需要去掉%s
周围的引号,之后你需要知道cursor.execute()
的第二个参数是一个元组,并且写成一个单元组:
(item,)
注意逗号。那么解决方法是:
sql="""INSERT INTO table (col1) VALUES (%s)"""
cursor.execute(sql, (x,))
【讨论】:
我试过这个sql="""INSERT INTO table (col1,col2) VALUES (%s)""" cursor.execute(sql, (x,))
。它会运行,但不会将数据插入数据库。
如果您删除占位符周围的引号,您的两列版本是正确的。以上是关于无法使用 MySQL 在 python 中插入单列值的主要内容,如果未能解决你的问题,请参考以下文章
带有Python的Mysql无法插入具有自动增量ID的记录,为啥?