使用 SQLAlchemy 的声明性语法时访问表实例的最佳方式

Posted

技术标签:

【中文标题】使用 SQLAlchemy 的声明性语法时访问表实例的最佳方式【英文标题】:Best way to access table instances when using SQLAlchemy's declarative syntax 【发布时间】:2010-09-09 16:52:16 【问题描述】:

SQLAlchemy 的所有文档都给出了使用本地表实例的 INSERTUPDATE 示例(例如 tablename.update()...)

使用声明性语法似乎很难做到这一点,我需要引用 Base.metadata.tables["tablename"] 来获取表引用。

我应该以其他方式执行此操作吗?使用声明性语法时,INSERTUPDATE 是否有不同的语法推荐?我应该改用旧方法吗?

【问题讨论】:

【参考方案1】:

它对我有用:

class Users(Base):
    __tablename__   = 'users'
    __table_args__  = 'autoload':True

users = Users()
print users.__table__.select()

...选择用户.......

【讨论】:

注意它是 ____table____ 不是 ____tablename____【参考方案2】:

通过声明类的__table__ 属性

【讨论】:

【参考方案3】:

table(对象)和tablename(表格名称,字符串)之间可能存在一些混淆。使用 table 类属性对我来说很好。

【讨论】:

以上是关于使用 SQLAlchemy 的声明性语法时访问表实例的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQLAlchemy 结果中获取列名(声明性语法)

使用 sqlalchemy 的声明性 ORM 扩展时的多列索引

SQLAlchemy 如何使用声明性映射一对一关系的单列

如何使用额外的方法扩展 SQLAlchemy 绑定声明性模型?

增强多态身份的 SQLAlchemy 语法

SQLAlchemy:声明性 Mixin 类中的 getter/setter