【发布时间】:2019-09-26 06:22:24
【问题描述】:
总结
在 SQL Server 中,同义词通常用于将远程表抽象到当前数据库上下文中。普通的 DML 操作在这种结构上工作得很好,但 SQL Server 确实将同义词作为它们自己的对象类型与表分开跟踪。
我正在尝试利用 pandas DataFrame#to_sql 方法来促进加载同义词,虽然当表在数据库本地时它工作得很好,但它无法通过同义词找到表,而是尝试创建一个新的表与 DataFrame 的结构协调,这会导致对象名称冲突和不良行为。
通过源跟踪,pandas 似乎利用了dialect's has_table method,在这种情况下跟踪到SQL Alchemy's MSSQL dialect implementation,然后查询INFORMATION_SCHEMA.columns view 作为验证表是否存在的一种方式。
不幸的是,同义词表不会出现在像这样的INFORMATION_SCHEMA 视图中。在the answer for "How to find all column names of a synonym" 中,回答者提供了一种建立同义词列的技术,此处可能适用。
问题
是否有任何方法可以在DataFrame#to_sql 期间选择性地跳过表存在检查?如果没有,有什么方法可以强制 pandas 或 SQL Alchemy 识别同义词?我在 SO 上找不到任何类似的问题,git 也没有类似的问题。
【问题讨论】:
标签: python sql-server pandas sqlalchemy flask-sqlalchemy