gpt4 book ai didi

python - 为什么sqlalchemy.Column实例的属性 'name'消失了?

转载 作者:太空宇宙 更新时间:2023-11-04 09:59:14 26 4
gpt4 key购买 nike

我正在为 sqlalchemy 模型编写属性更改历史记录。属性列表,这对历史很重要,我保存在类属性 history_attributes 中。

from sqlalchemy import Integer, Column, String
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class HistoryAttribute:
def __init__(self, descriptor, display_name, use_message=False):
self.name = descriptor.name
self.display_name = display_name
self.use_message = use_message
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
first_name = Column(String(100))
email = Column(String(100))
history_attributes = (
HistoryAttribute(descriptor=first_name, display_name='User name'),
email
)

print(User.history_attributes[0].name)
>>> None
print(User.history_attributes[1].name)
>>> email

如果我将一个属性传递给其他类的构造函数,为什么 Column 实例的属性 "name" 消失了?当然,我可以编写 first_name = Column('first_name', String(100) 并且代码可以正常工作,但我不想显式添加 Column.name 。我使用 namedtuple 避免了这个问题,然后将其传递给 HistoryAttribute 类的构造函数,但它非常类似于拐杖。

最佳答案

不是name属性消失了,而是还没有初始化。查看传递给 HistoryAttributefirst_name 的值:Column(String(100));它不包含对字符串 first_name 的任何提及。 SQLAlchemy 稍后会在定义类后填写名称。

关于python - 为什么sqlalchemy.Column实例的属性 'name'消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44546227/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com