首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQLdb执行

MySQLdb执行
EN

Stack Overflow用户
提问于 2012-06-04 19:48:24
回答 3查看 3.7K关注 0票数 0

我在这个网站和许多其他网站上到处搜索,发现了类似的问题,但没有一个答案对我有效(通常只是解释元组)。我正在编写python脚本来解析html页面并填充数据库。我几乎所有的东西都在工作,除了人口部分.

下面是处理mySQL数据库的代码段(注意:在python中使用MySQLdb模块)

代码语言:javascript
运行
复制
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()

我第一次用解析的字符串测试它,但这不起作用。这给了我两个错误:

  1. 回溯(最近一次调用):文件"C:\Python32\lib\site-packages\MySQLdb\cursors.py",行171,在执行r=self._query(查询)文件"C:\Python32\lib\site-packages\MySQLdb\cursors.py",行330中,在_query rowcount = self._do_query(q) "C:\Python32\lib\site-packages\MySQLdb\cursors.py",第294行中,在_do_query db.query(q) _mysql_exceptions.ProgrammingError:(1064 )中,“您的SQL语法出现了错误;检查与您的MySQL服务器版本相对应的手册,以获得在第1行使用接近'%s)‘的右yntax ))
  2. 回溯(最近一次调用):文件"C:\Python32\lib\site-packages\MySQLdb\cursors.py",行171,在执行r=self._query(查询)文件"C:\Python32\lib\site-packages\MySQLdb\cursors.py",行330中,在_query rowcount = self._do_query(q) "C:\Python32\lib\site-packages\MySQLdb\cursors.py",第294行中,在_do_query db.query(q) _mysql_exceptions.ProgrammingError:(1064 )中,“您的SQL语法出现了错误;检查与您的MySQL服务器版本相对应的手册,以获得在第1行使用接近'%s)‘的右yntax ))

为什么这个查询不工作!?

更新:在我差点把头发拔下来后,我决定回到2.7.3,猜猜.现在一切正常:我应该知道这是一个错误.谢谢你的帮助,尽管如此,大家!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-04 19:59:23

我认为您不需要任何复杂的或高级的SQL;您只需要存储和检索一些东西。所以,我认为ORM可能会让你的生活更轻松。

我建议你尝试使用秋季ORM:

http://pypi.python.org/pypi/autumn/0.5.1

这是一个小而简单的ORM,易于理解和使用。

Python的另一个流行的ORM是SQLAlchemy:

http://www.sqlalchemy.org/

票数 1
EN

Stack Overflow用户

发布于 2012-06-25 18:29:04

我刚才也碰到这个了。经过大量的挖掘之后,发现这是可行的(注意对值的更改):

代码语言:javascript
运行
复制
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语句中而不是被替换。看起来,这些更改从未被升级到官方来源中。

票数 2
EN

Stack Overflow用户

发布于 2012-06-04 21:35:29

您应该这样编写代码:

代码语言:javascript
运行
复制
 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书。是免费的。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10887372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档