下面是如何使用sql炼金术获取架构的表名
from sqlalchemy import inspect
inspector = inspect(engine)
table_list = inspector.get_table_names(schema="PUBLIC")这给出了用小写表示的表名,但实际上,表在数据库中存在大写大小写,因此我希望得到与数据库/模式中存在的表名相同的表名。
注:使用雪花数据库的
发布于 2022-03-23 19:47:05
SQLAlchemy是否进行"case规范化“取决于方言,因为规范化对某些数据库是方便的,而对另一些数据库则是一种麻烦。
例如,mssql+pyodbc://方言不强制表名小写:
with engine.begin() as conn:
conn.exec_driver_sql("DROP TABLE IF EXISTS MY_TABLE")
conn.exec_driver_sql("CREATE TABLE MY_TABLE (id int primary key)")
insp = sa.inspect(engine)
print(insp.get_table_names())
# ['MY_TABLE', 'tbl_main', 'tbl_temp']您可能需要询问雪花-方形炼金术的开发人员。
发布于 2022-03-23 20:42:03
在雪花数据库中,我只是通过创建不同案例的表进行检查,我注意到的是,如果我们创建具有(test/TEST)这样的小写名称的表,那么SqlAlchemy在get_table_name方法中返回用小写命名的表,但是如果我们创建名称具有混合大小写(TestAbc)的表,那么它就会返回精确的大小写,所以我认为在从sql alchmey元数据/检查方法获得表名后,我们可以简单地将小写表名称转换为上层表。
https://stackoverflow.com/questions/71592948
复制相似问题