【问题标题】:How to perform table reflection / introspection in SQLAlchemy from a Sybase db with Python?如何使用 Python 从 Sybase db 在 SQLAlchemy 中执行表反射/自省?
【发布时间】:2012-03-24 11:45:34
【问题描述】:

一些有用的stackoverflow用户pointed outneither the pyodbc nor python-sybase plugins support Sybase table reflection within SQLAlchemy。

所以,我的问题是:是否存在任何替代方案来反映 Sybase 部署中表的数据库元数据?或者,如果这不可能,是否有一种聪明的方法来修补和/或破解一个解决方案来下拉表元数据以进行解析和查询构建?

【问题讨论】:

    标签: python sql sqlalchemy sybase introspection


    【解决方案1】:

    这一切都归结为调用数据库提供的信息架构,这是一组可供您选择的表和/或视图,然后返回有关表、列和其他所有内容的数据。

    在 Sybase 的情况下,他们的信息模式有一个非常非常严格的格式(主要是由于16 + 16 column format of representing foreign key constraints),所以当我创建 Sybase 方言时,我将工作的反射部分保留为“去做”。没有技术上的原因不能完成,这只是一项漫长而乏味的工作,而且到目前为止我们几乎没有人使用 Sybase 方言。

    如果您想制定一些基本查询来获取表名和列名,我们可以将它们直接提交到 SQLAlchemy。您将使用的架构记录在本节中:http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.tables/html/tables/tables2.htm,您将在其中查看 sysobjects、syscolumn 和 sysreferences。

    【讨论】:

    • 哇,没有什么比直接从马嘴里得到答案更好的了,可以这么说。顺便说一句,感谢您使用 SQLAlchemy 所做的工作——这让我第一次使用 DB 时的痛苦稍微减轻了 :) 至于为项目做出贡献,我一直想回馈已经做了这么多的社区对我来说,所以我对这个机会很感兴趣。目前,我有一个尽快完成这个项目的截止日期,所以我正在使用 cursor/engine.execute() 手动干扰解决方案,但一旦有时间我会回到这个问题。跨度>
    猜你喜欢
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    相关资源
    最近更新 更多