PyMySQL 查询字符串生成器

PyMySQL query string builder

所以我使用 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))

您可以使用 peewee 一个简单的小型 ORM。 http://docs.peewee-orm.com/en/latest/peewee/quickstart.html#quickstart

它似乎正在生成一个使用双引号作为标识符分隔符的查询。

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

SELECT `id`,`username` FROM `users`

您可以配置 MySQL 使用双引号,这是符合 ANSI SQL 标准的正确标识符分隔符。为此,您必须更改 sql_mode 以包含模式 ANSIANSI_QUOTES

阅读 https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html for full documentation on sql_mode behavior, and https://dev.mysql.com/doc/refman/8.0/en/identifiers.html 以获取有关标识符分隔符的文档。

我搜索了 pypika 网站,文档很少。但是显然 MySQLQuery 的 class 将其自己的 QUOTE_CHAR 设置为 `,这正是我所期望的。

您是否为 MySQL 使用了正确的查询构建器?