📜  如何从 sqlalchemy 属性模型中获取 db 中的列名 - SQL (1)

📅  最后修改于: 2023-12-03 15:37:54.957000             🧑  作者: Mango

如何从 sqlalchemy 属性模型中获取 db 中的列名 - SQL

在使用 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 中的列名的两种方法,可以根据实际情况选择不同的方法。