mysql 在snowflake web UI中工作,但通过python sqlalchemy连接器不一致

qgzx9mmu  于 5个月前  发布在  Mysql
关注(0)|答案(4)|浏览(58)

我有一个sqlalchemy连接设置到snowflake,它可以工作,因为我可以运行一些查询并得到结果。查询的尝试也记录在我的user_query历史记录中。
我的联系:

engine = create_engine(URL(
  user, password, account, database, warehouse, role
))

connection = engine.connect()

字符串
然而,大多数时候我的查询都无法返回操作错误(即 snowflake 错误)https://docs.sqlalchemy.org/en/13/errors.html#error-e3q8。但这些相同的查询将在 snowflake Web UI中运行良好。
例如,如果我跑

test_query = 'SELECT * FROM TABLE DB1.SCHEMA1.TABLE1'
test = pd.read_sql(test_query, connection)


当我查看我的query_history时,它显示sqlalchemy查询失败,然后一秒钟后基本查询本身成功运行。但是我不确定这个输出在snowflake设置中的位置,以及为什么它没有通过我的sqlalchemy连接传输。我看到的是.

  • 查询= 'DESC TABLE /* sqlalchemy:_has_object */“SELECT * FROM DB 1”.“SCHEMA 1”.“TABLE 1”

错误代码= 2003错误消息= SQL编译错误:数据库“SELECT * FROM DB 1”不存在。
然后1秒后,查询本身将成功运行,但不清楚它会去哪里,因为它不会通过连接发送。

  • 查询= SELECT * FROM TABLE DB1.SCHEMA1.TABLE1

任何帮助非常感谢!谢谢

cygmwpex

cygmwpex1#

您也可以在此处尝试添加模式

engine = create_engine(URL(
    account = '',
    user = '',
    password = '',
    database = '',
    schema = '',
    warehouse = '',
    role='',
))

connection = engine.connect()

字符串

qq24tv8q

qq24tv8q2#

查询在WebUI中运行,并在通过CLI或其他模式连接时因语法错误而失败的可能性很小。
建议您通过CLI或连接器打印查询,在WebUI上运行相同的查询,并注意您正在运行查询的角色。
请分享你的发现。

k4aesqcs

k4aesqcs3#

上述查询(SELECT * FROM TABLE DB1.SCHEMA1.TABLE1)不是 snowflake 支持的SQL语法。
这里的链接将帮助你更多的细节。希望这有帮助!

vsmadaxz

vsmadaxz4#

失败的DESC TABLE查询可能是由于pandas实现问题,如下所述。https://community.snowflake.com/s/article/Thousands-of-Failed-SQL-Queries-from-SQL-Alchemy-sqlalchemy-has-object
大量的回滚可能是由于您的连接池行为,它可能被设置为在返回时重置,即当连接返回到池时,它执行回滚(本质上是无操作)以清除事务状态。https://docs.sqlalchemy.org/en/20/core/pooling.html

相关问题