Python 使用小写列将数据帧转换为雪花

Python 使用小写列将数据帧转换为雪花,python,pandas,dataframe,sqlalchemy,snowflake-cloud-data-platform,Python,Pandas,Dataframe,Sqlalchemy,Snowflake Cloud Data Platform,目标是像使用sqlachemy一样将pandas数据帧写入snowflake。无论是创建新表还是向现有表添加行 问题是,当使用snowflake sqlachemy引擎时,它会将所有列名和表名转换为大写。 以下代码执行时没有错误,但也不保留服务器对象名称 from sqlalchemy import create_engine import pandas as pd snowflake_engine = create_engine({connection_settings_here}) df

目标是像使用sqlachemy一样将pandas数据帧写入snowflake。无论是创建新表还是向现有表添加行

问题是,当使用snowflake sqlachemy引擎时,它会将所有列名和表名转换为大写。 以下代码执行时没有错误,但也不保留服务器对象名称

from sqlalchemy import create_engine
import pandas as pd

snowflake_engine = create_engine({connection_settings_here})

df = pd.DataFrame([{'col1': 2, 'col2': 2}])

df.to_sql('test1',con=snowflake_engine, index=False)
有没有办法在snowflake sqlalchemy引擎中禁用自动大写或强制使用小写名称?

另外,我已经尝试在表定义中添加双引号:
df.to\u sql(“\'test1\”,con=snowflake\u引擎,index=False)
但随后它在其周围创建了三个引号,并失败了:

CREATE TABLE """test1""" (
    col1 BIGINT, 
    col2 BIGINT
)

您强制列和表名使用小写是有原因的吗?Snowflake将其转换为大写,但您仍然可以将其作为小写查询。@MikeWalton是的,已经有很多表使用小写列名,需要使用它。好的-这不是Snowflake的最佳做法,因为当需要双引号时,它会增加查询表和列的复杂性。我在文档中发现了这一点,但不确定它对您有多大帮助:不确定我们是否对此有一个很好的答案,除非您可以编写一个函数作为包装器。作为额外的补充说明,这里有一些关于开发选择的讨论:我们的一个工具期望所有结果中都有小写的列,并引用它发送的SQL中所有带小写的列。因此,对于该工具,我们打开了会话参数QUOTED_IDENTIFIERS_IGNORE_CASE,但我们还将该工具更改为“toLower”返回时的所有列。。不确定这是否是对您开放的路径。是否有原因强制列和表名为小写?Snowflake将其转换为大写,但您仍然可以将其作为小写查询。@MikeWalton是的,已经有很多表使用小写列名,需要使用它。好的-这不是Snowflake的最佳做法,因为当需要双引号时,它会增加查询表和列的复杂性。我在文档中发现了这一点,但不确定它对您有多大帮助:不确定我们是否对此有一个很好的答案,除非您可以编写一个函数作为包装器。作为额外的补充说明,这里有一些关于开发选择的讨论:我们的一个工具期望所有结果中都有小写的列,并引用它发送的SQL中所有带小写的列。因此,对于该工具,我们打开了会话参数QUOTED_IDENTIFIERS_IGNORE_CASE,但我们还将该工具更改为“toLower”返回时的所有列。。不确定这是否是一条对您开放的路径。