sqlalchemy 模型中的 python 数据属性

标签 python sqlalchemy

我遇到了 sqlalchemy 模型中 python 类属性与数据属性的问题。这是一个演示正在发生的事情的小示例:

# -*- coding: utf-8 -*-
import cherrypy
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('mysql://USER:PASS@localhost/SCHEMA?charset=utf8', echo=True)
Session = sessionmaker(bind=engine)
session = Session()
Base = declarative_base()

class User(Base):
    __tablename__ = 'user'

    id = Column(Integer, primary_key=True)
    username = Column(String, nullable=False)
    name = Column(String, nullable=False)
    email = Column(String, nullable=False)

    def __init__(self, username, name, email):
        self.username = username
        self.name = name
        self.email = email
        self.data_attribute = "my data attribute"
        print "__init__"

    def __repr__(self):
        print "__repr__"
        return "<User('%s','%s', '%s')>" % (self.username, self.name, self.email)

class Root(object):

    @cherrypy.expose
    def test(self):        
        our_user = session.query(User).one()        
        return our_user.data_attribute #error

if __name__ == '__main__':

    cherrypy.tree.mount(Root())
    cherrypy.server.quickstart()
    cherrypy.engine.start()

该代码错误,因为从数据库中获取对象时 __init__ 不会运行,因此 data_attribute 不存在。如果我将 data_attributeColumn 对象放在一起,它就会成为一个类属性(我认为),因此为 User 的所有实例携带相同的值。这不是我想要的。

我需要做什么才能在我的 User 对象上拥有一个不是来自数据库但对于 User 的每个实例都是唯一的数据属性?

编辑:我可能应该指出 data_attribute 并不总是只是 __init__ 中设置的简单字符串 - 这只是为了演示问题。

最佳答案

关于sqlalchemy 模型中的 python 数据属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3422408/

相关文章:

python - Django 从没有外键关系的多个表中检索数据

python - 如何将 Python 字典存储为环境变量

从模块导入函数而从另一个模块导入类时出现 Python 导入错误 (ModuleNotFoundError)

python - 以这种方式循环遍历 SQL 结果会返回期望的结果吗?

python - sqlalchemy中的分组和计数功能

python - 从python中的字符串解析嵌套逻辑

python - Const char* 参数只给出第一个字符(在 python3 上)

python - sqlalchemy:滥用临时字段

python - Flask与SQLalchemy追加关系,无需每次都加载对象

python - 使用 psycopg2 模块将值插入数据库时​​出错