【问题标题】:Cannot write to a Snowflake table but with no errors returned无法写入雪花表但没有返回错误
【发布时间】:2021-12-14 18:00:57
【问题描述】:

代码运行成功,没有返回错误,但只显示旧记录:

import pandas as pd
from sqlalchemy import create_engine
from snowflake.sqlalchemy import URL
from config import config

engine = create_engine(URL(account=config.account, 
          user=config.username, 
          password=config.password, 
          warehouse=config.warehouse, 
          database=config.database, 
          schema=config.schema,))
    
conn = engine.connect()
    
df = pd.DataFrame([('AAA', '1234'), ('BBB', '5678')], columns=['name', 'pswd'])
df.to_sql('demo_db.public.test_f1', con=engine, index=False, if_exists='append', index_label=None)
        
df = pd.read_sql_query('select * from demo_db.public.test_f1', conn)
print(df.head(5))
    
conn.close()
engine.dispose()

请帮忙!

【问题讨论】:

  • 您能分享一下 Snowflake 查询历史显示这些语句的内容吗?
  • 我没有明白你的意思。我使用 print(df.head(5)) 显示表中的前 5 行,还去雪花预览表的数据,根本没有添加新记录。
  • @FrankDuan 也许名字被自动引用并且表格可以通过以下方式访问:SELECT * FROM demo_db.public."demo_db.public.test_f1";
  • 这里在黑暗中拍摄..制作引擎时需要提供雪花角色吗?我知道角色的概念会让人们大吃一惊。
  • @Lukasz Szozda 你是对的!我将其更改为: df.to_sql('test_f1', con=engine, index=False, if_exists='append', index_label=None) 它有效!非常感谢!

标签: python pandas snowflake-cloud-data-platform


【解决方案1】:

似乎 3 部分名称被视为单个标识符,并且数据被插入到名为 "demo_db.public.test_f1" 的表中:

SELECT * FROM demo_db.public."demo_db.public.test_f1";

name 可以仅作为表名提供,并且从连接中推断出数据库/模式:

df.to_sql('test_f1', con=engine, index=False, if_exists='append', index_label=None)

【讨论】:

    猜你喜欢
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 2020-04-10
    • 2021-06-15
    • 2015-09-22
    • 1970-01-01
    相关资源
    最近更新 更多