📅  最后修改于: 2023-12-03 15:37:54.957000             🧑  作者: Mango
在使用 SQLAlchemy ORM 时,经常需要从模型类属性中获取相应的表中的列名,以用于编写 SQL 查询语句。下面介绍如何从 SQLAlchemy 属性模型中获取 db 中的列名。
column_property
属性如果在声明属性时使用了 column_property
,那么可以通过 column
属性获取列名。
from sqlalchemy import Column, Integer
from sqlalchemy.orm import column_property
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
age = column_property(Column(Integer), Column(Integer))
在上面的代码中,age
属性使用了 column_property
声明,同时声明了两个 Column
,那么获取 age
的列名代码如下:
from sqlalchemy.sql import table, column
table('user').c[User.age.columns[0].name] # 或者是 column('age')
__table__
属性如果没有使用 column_property
属性,那么可以使用模型类的 __table__
属性来获取列名。
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
在上面的代码中,获取 age
的列名代码如下:
from sqlalchemy.sql import table, column
table('user').c[User.__table__.columns['age'].name] # 或者是 column('age')
以上就是从 SQLAlchemy 属性模型中获取 db 中的列名的两种方法,可以根据实际情况选择不同的方法。