我在雪花中创建了存储过程,该过程在雪花 UI 中执行得很好,也通过使用 snowsql 从服务器执行。现在我想从python程序执行过程,我试图从python执行,这是我遵循的步骤:
cs = ctx.cursor()
cs.execute("call test_proc('value1', 'value2')")
x = cs.fetchall()
print(x)
但出现错误:
<块引用>snowflake.connector.errors.ProgrammingError: 002140 (42601): SQL 编译错误:未知函数 test_proc
你能帮我解决这个问题吗。
谢谢,
答案 0 :(得分:1)
使用 Python connector 连接到 Snowflake 时,您可以定义 DATABASE/SCHEMA
conn = snowflake.connector.connect(
user=USER,
password=PASSWORD,
account=ACCOUNT,
warehouse=WAREHOUSE,
database=DATABASE,
schema=SCHEMA
);
一旦你设置好了,你就可以在不使用完全限定名称的情况下调用你的存储过程:
cs.execute("call test_proc('value1', 'value2')");
替代方法是:
<块引用>Using the Database, Schema, and Warehouse
指定要在其中创建表的数据库和架构。还要指定将为执行 DML 语句和查询提供资源的仓库。
例如,要使用数据库 testdb、模式 testschema 和仓库 tiny_warehouse(之前创建的):
conn.cursor().execute("USE WAREHOUSE tiny_warehouse_mg")
conn.cursor().execute("USE DATABASE testdb_mg")
conn.cursor().execute("USE SCHEMA testdb_mg.testschema_mg")
答案 1 :(得分:0)
实际上,我必须有这样的命令
<块引用>cs.execute("call yourdbname.schemaname.test_proc('value1', 'value2')")
并且它按预期工作。
谢谢