我的mysqlx python查询插入了一个“AS”语句而不是“SELECT”语句,为什么?

8gsdolmq  于 2022-11-21  发布在  Mysql
关注(0)|答案(1)|浏览(149)

下面 是 我 正在 运行 的 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
任何 帮助 都 是 非常 受 欢迎 的 。

kkbh8khc

kkbh8khc1#

哦!我想我找到了一个解决方案。当没有任何东西传入.select()方法时,它会将'*'设置为默认值。试图将["*"]传入.select()会导致mysqlx生成类似'SELECT * AS *...'的内容,这就是问题的根源。这个新代码工作得很好。

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 = '%s'") % str(OrgID)).execute()
        print(result.fetch_one())

相关问题