我在这个网站和许多其他网站上到处搜索,发现了类似的问题,但没有一个答案对我有效(通常只是解释元组)。我正在编写python脚本来解析html页面并填充数据库。我几乎所有的东西都在工作,除了人口部分.
下面是处理mySQL数据库的代码段(注意:在python中使用MySQLdb模块)
conn = MySQLdb.connect(user="root", passwd="xxxxx",db="nutrients")
cur = conn.cursor()
test = "Canned Corn"
cur.execute("INSERT INTO food (name) VALUES (%s)", (test,))
conn.commit()
我第一次用解析的字符串测试它,但这不起作用。这给了我两个错误:
为什么这个查询不工作!?
更新:在我差点把头发拔下来后,我决定回到2.7.3,猜猜.现在一切正常:我应该知道这是一个错误.谢谢你的帮助,尽管如此,大家!
发布于 2012-06-04 11:59:23
我认为您不需要任何复杂的或高级的SQL;您只需要存储和检索一些东西。所以,我认为ORM可能会让你的生活更轻松。
我建议你尝试使用秋季ORM:
http://pypi.python.org/pypi/autumn/0.5.1
这是一个小而简单的ORM,易于理解和使用。
Python的另一个流行的ORM是SQLAlchemy:
发布于 2012-06-25 10:29:04
我刚才也碰到这个了。经过大量的挖掘之后,发现这是可行的(注意对值的更改):
conn = MySQLdb.connect(user="root", passwd="xxxxx",db="nutrients")
cur = conn.cursor()
test = "Canned Corn"
cur.execute("INSERT INTO food (name) VALUES ({0})", (test,))
conn.commit()
背景信息:在发布在MySQLdb站点上的非官方Python包到Python3的端口中,cursors.py中的execute函数被修改为使用format()而不是%操作符。因此,为什么%s仍然保留在SQL语句中而不是被替换。看起来,这些更改从未被升级到官方来源中。
发布于 2012-06-04 13:35:29
您应该这样编写代码:
conn = MySQLdb.connect(user="root", passwd="xxxxx",db="nutrients")
cur = conn.cursor()
test = "Canned Corn"
cur.execute("INSERT INTO food (name) VALUES (%s)" % (test,) )
conn.commit()
如果您对python还不熟悉,并且有一些编程经验,那么请遵循潜入Python书。是免费的。
https://stackoverflow.com/questions/10887372
复制