开发者社区> 问答> 正文

PyMySQL查询字符串生成器

因此,我正在使用PyMySQL包查询远程数据库,并且发现不得不使用.execute()方法非常烦人。

我正在寻找一种包装器,该包装器将能够以更友好的方式构造原始MySQL查询。有谁知道一个可以做到这一点的软件包?

我尝试使用pypika,但是它正在构建的查询(“ SELECT“ id”,“ username” FROM“ users”')引发错误

pymysql.err.ProgrammingError: (1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"users"' at line 1')

编辑:这是一个远程数据库,我无法控制结构方式,并且结构可能会更改,所以我认为我不能使用SQLAlchemy

编辑2:这是我遇到上述错误时使用的代码

from pypika import Query, Table, Field import pymysql users = Table('users') q = Query.from_(users).select(users.id, users.username) db = pymysql.connect(host=host, port=3306, user=user, passwd=password, db=db, cursorclass=pymysql.cursors.DictCursor) db.execute(str(q))

问题来源于stack overflow

展开
收起
保持可爱mmm 2019-11-15 14:08:59 683 0
1 条回答
写回答
取消 提交回答
  • 看起来它正在使用双引号作为标识符定界符来生成查询。

    但是MySQL使用反引号作为默认的标识符定界符,因此查询应如下所示:

    SELECT id,username FROM users 您可以将MySQL配置为使用双引号,这是符合ANSI SQL标准的正确标识符分隔符。为此,您必须更改sql_mode使其包含模式ANSI或ANSI_QUOTES。

    阅读https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html以获得有关sql_mode行为的完整文档,以及https://dev.mysql.com/doc/refman/8.0/en/ identifiers.html,以获取有关标识符定界符的文档。

    我搜索了pypika网站,文档非常稀疏。但是显然有一个用于MySQLQueryBuilder将其自己的QUOTE_CHAR设置为` 的类,这正是我所期望的。

    2019-11-15 14:09:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载