下面 是 我 正在 运行 的 python 代码 。
def queryOrg(self, OrgID):
session = mysqlx.get_session(
{'host': db.HOST, 'port': db.PORT, 'user': db.USER, 'password': db.PASSWORD})
org_schema = session.get_schema('Organizations')
org_table = org_schema.get_table('Organizations')
result = org_table.select(["*"]).where('Organization_ID = ' + str(OrgID)).execute()
print(result)
中 的 每 一 个
下面 是 错误 输出
mysqlx.errors.OperationalError: 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 'AS `*` FROM `Organizations`.`Organizations` WHERE (`Organization_ID` = 2)' at line 1
格式
当 我 跑 的 时候 ...
def queryOrg(self, OrgID):
session = mysqlx.get_session(
{'host': db.HOST, 'port': db.PORT, 'user': db.USER, 'password': db.PASSWORD})
org_schema = session.get_schema('Organizations')
org_table = org_schema.get_table('Organizations')
result = org_table.select(["*"]).where('Organization_ID = ' + str(OrgID)).get_sql()
print(result)
格式
我 得到 这个 输出 。
SELECT * FROM Organizations.Organizations WHERE Organization_ID = 2
格式
因此 , 当 我 使用 . get _ sql ( ) 方法 时 , 它 似乎 生成 了 正确 的 mysql 查询 , 但 当 我 调用 . execute ( ) 方法 时 , 某些 东西 将 查询 更改 为 " AS *
FROM Organizations
. Organizations
WHERE ( Organization_ID
= 2 ) "
我 不 知道 为什么 会 发生 这种 情况 。 我 在 一 个 ubuntu rasberry pi 上 运行 MySQL 服务 器 , 版本 8.031 - 0ubuntu0.22.04.1 , 我 运行 的 是 pip3 mysql-connector - python 8.0.30 的 python 3.8.10 。
这个 函数 是 通过 一 个 flask 应用 程序 调用 的 。 我 在 2.2.2 版本 上 运行 flask
任何 帮助 都 是 非常 受 欢迎 的 。
1条答案
按热度按时间kkbh8khc1#
哦!我想我找到了一个解决方案。当没有任何东西传入.select()方法时,它会将'*'设置为默认值。试图将["*"]传入.select()会导致mysqlx生成类似'SELECT * AS *...'的内容,这就是问题的根源。这个新代码工作得很好。