【问题标题】:SQL query works in console but not in pythonSQL 查询在控制台中有效,但在 python 中无效
【发布时间】:2012-07-27 04:10:03
【问题描述】:

您好,我在使用 sql 查询时遇到问题,它在控制台中可以完美运行,但是当我在 python 中实现时,它似乎可以完美运行,没有错误,但是当我检查数据库时它没有工作,但是使用控制台它确实可以正常工作当我检查数据库时出现错误,数据在那里......我使用的查询完全相同。

有什么想法吗?

UPDATE ex SET fbsiteurl = stringvarible, fbsitesource = '' WHERE id = 23123;

在python中:

 cur = con.cursor()
 sqlquery = "UPDATE ex SET fbsiteurl = '"+somevarible+"', fbsitesource =        '"+somevarible+"' WHERE id = %d;" % recordid                                
 print sqlquery
 cur.execute(sqlquery)

查询在打印中显示正常没有问题,如果我复制打印出来并将其粘贴到 mysql 控制台中,它每次都可以完美运行,只是来到 python 它的行为就像它一样,但 dosnt 真的 0_o

【问题讨论】:

  • 请不要将字符串添加到一起来创建您的查询。这是非常危险的。阅读关于“参数化查询”的数据库库文档。例如,可以写成“sqlquery = 'UPDATE ex SET fbsiteurl = %s, fbsitesource= %s WHERE id = %s'; cur.execute(sqlquery, (somevariable, anothervariable, recordid))”。这非常重要!
  • 感谢您指出我很感激

标签: python mysql sql


【解决方案1】:

connection.autocommit(),或者你需要做connection.commit()

【讨论】:

  • 这对我也有用,你为什么需要这样做?
【解决方案2】:

去过那里:)你需要关闭光标

【讨论】:

  • 关闭光标没有帮助,这一切多么奇怪。
【解决方案3】:

这个小问题一直持续到今天。为了澄清起见,我不得不使用上述两个答案,例如:

        cur = self.db.cursor()
        try:
            cur.execute(sqlcommand)
            self.db.commit()
            res = cur.fetchall()
        except res is not None:
            print(res)
        finally:
            cur.close()

【讨论】:

    猜你喜欢
    • 2018-09-13
    • 1970-01-01
    • 2015-06-21
    • 2013-01-24
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多