使用 SQLAlchemy 的声明性语法时访问表实例的最佳方式
Posted
技术标签:
【中文标题】使用 SQLAlchemy 的声明性语法时访问表实例的最佳方式【英文标题】:Best way to access table instances when using SQLAlchemy's declarative syntax 【发布时间】:2010-09-09 16:52:16 【问题描述】:SQLAlchemy 的所有文档都给出了使用本地表实例的 INSERT
和 UPDATE
示例(例如 tablename.update()
...)
使用声明性语法似乎很难做到这一点,我需要引用 Base.metadata.tables["tablename"]
来获取表引用。
我应该以其他方式执行此操作吗?使用声明性语法时,INSERT
和 UPDATE
是否有不同的语法推荐?我应该改用旧方法吗?
【问题讨论】:
【参考方案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 的声明性 ORM 扩展时的多列索引