📜  如何通过列名从 SQLAlchemy 实例中获取值?(1)

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

如何通过列名从 SQLAlchemy 实例中获取值?

在 SQLAlchemy 中,通过列名从实例中获取值可以使用 getattr() 函数和列对象。

使用 getattr() 函数

getattr() 函数可以用于获取对象的属性值。在 SQLAlchemy 中,每个列对象都对应一个属性名称,可以直接使用 getattr() 函数来获取对应列的值。

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    age = Column(Integer)
    email = Column(String)

user = User(id=1, username='Alice', age=20, email='alice@example.com')
age = getattr(user, 'age')
print(age) # 20

在上面的例子中,使用 getattr() 函数获取了 User 对象中 age 列的值,并将其赋值给变量 age

使用列对象

除了 getattr() 函数,我们还可以使用列对象进行属性获取。

age = user.age
print(age) # 20

在上面的例子中,我们直接使用 user.age 获取了 User 对象中 age 列的值,并将其赋值给变量 age

注意事项

当使用列对象进行属性获取时,需要注意以下事项:

  • 列名称只能使用小写字母;
  • 如果列名称与 Python 关键字重名,需要在使用时加上反引号。
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    username = Column(String)
    age = Column(Integer)
    from = Column(String) # 注意这里使用了 Python 关键字

user = User(id=1, username='Alice', age=20, from='China') # 需要使用反引号
country = user.`from`
print(country) # China
总结

通过本文的介绍,你了解了如何通过列名从 SQLAlchemy 实例中获取值。使用 getattr() 函数和列对象都可以实现该功能,具体使用哪种方式可以根据自己的代码风格进行选择。当使用列对象时,需要注意列名称的大小写和是否与 Python 关键字重名。