python - MySQLdb/Python INSERT 查询不将数据插入表中

标签 python mysql innodb mysql-python

我正在尝试使用以下代码通过 Python 将值插入表中:

db = MySQLdb.connect(host="localhost",user="root",passwd="", db="x")
db.autocommit(True)
cur = db.cursor()
query = """INSERT INTO b (source_id,text,author,score,type,location) VALUES (%s,%s,%s,%s,%s,%s)""" % (1,Tweet.text,User.screen_name,score,search_type,User.location)
print query
cur.execute(query)

我看到查询字符串被打印输出中的所有变量值正确填充(我没有对特殊字符做任何事情)。但是这些值根本没有被插入到数据库中。我的表看起来像这样:

| freebee | CREATE TABLE `b` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`source_id` int(5) NOT NULL,
`text` varchar(255) NOT NULL,
`author` varchar(120) DEFAULT NULL,
`score` tinyint(3) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`start_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`end_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`type` enum('food','event','stuff') NOT NULL,
`location` varchar(120) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=132 DEFAULT CHARSET=latin1 |

值得注意的是,AUTO_INCREMENT 设置为 132。我在几分钟前手动测试了一个插入查询,它被输入为 id #132。我想这意味着我已经尝试通过我的 python 脚本插入 131 次但失败了,但 id 键不断增加。谢谢。

最佳答案

如果你的查询是正确的(用 Print 语句检查)并且数据库连接也没有问题那么请执行这个命令

db.commit()

紧接在 cur.execute(query) 之后。或者你也可以设置

db.autocommit(True)

建立数据库连接后,在 python 脚本的开头。

完成所有工作后使用命令

db.close()

用于终止数据库连接。我希望这对你有用。

关于python - MySQLdb/Python INSERT 查询不将数据插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19879979/

相关文章:

mysql - 通过附加数百行来更新表

整数位的Mysql索引

mysql - 为什么 InnoDB 对 COUNT(*) 进行全面扫描?

mysql - Windows Server 2008 R2 上的 MySQL 5.5 错误 1067

Python 和 set() 操作 ... & 和 ^

python - 如何将新关键字放入 'keyword' 模块?

python - 如何在 PyCharm 中设置最大行长?

mysql - 如何从命令提示符检查数据库是否可用

MySQL 外键约束阻止在父表中插入查询

python - 如何删除数据框中的所有行?