【发布时间】:2012-04-02 13:21:54
【问题描述】:
conn = MySQLdb.connect(host=IP,user='john',passwd='ab2nng',db='mydb')
cursor = conn.cursor()
#this works.
cursor.execute("select * from crawl_log")
res = cursor.fetchall()
print res
#this doesn't work.
cursor.execute("insert into crawl_log(k, v) values(%s, %s)", ('test','test'))
我怎么知道它为什么不起作用?没有错误打印,什么都没有。
【问题讨论】:
-
很难从 mysqldb 模块文档中看出,但您可能需要在替换变量周围加上引号,如 cursor.execute("insert into crawl_log(k, v) values('%s', '%s')", ('test','test'))。 %s 语法看起来像 sprintf 格式,暗示它是文本替换而不是绑定变量......但文档没有说任何一种方式。
-
顺便说一句,在调试数据库代码时,有时以交互模式与数据库对话会很有帮助(即直接在数据库中输入 SQL,使用 phpMyAdmin 或类似方法。)这有助于确定是否是您的 SQL错了,或者你的 Python 代码错了。
标签: python mysql database mysql-python