首页 > 解决方案 > 如何在不写入数据库的情况下创建对象属性 -- peewee -- python

问题描述

也许我有一个理解问题。我尝试在一个数据库中制作 2 个表格。但是另外我需要在一个类中有一些我不想写入数据库的临时值。我尝试切换到 peewee 并阅读文档,但我自己找不到解决方案。如果没有 peewee,我会创建一个init方法来编写我的属性。但是我现在必须在哪里写它们?

from peewee import *
import datetime

db = SqliteDatabase('test.db', pragmas={'foreign_keys': 1})

class BaseModel(Model):
    class Meta:
        database = db

class Sensor(BaseModel):
    id = IntegerField(primary_key=True)
    sort = IntegerField()
    name = TextField()
    #def __init__(self):
        #self.sometemporaryvariable = "blabla"

    def meineparameter(self, hui):
        self.hui = hui
        print(self.hui)

class Sensor_measure(BaseModel):
    id = ForeignKeyField(Sensor, backref="sensorvalues")
    timestamp = DateTimeField(default=datetime.datetime.now)
    value = FloatField()

    class Meta:
        primary_key = CompositeKey("id", "timestamp")


db.connect()

db.create_tables([Sensor_measure, Sensor])

sensor1 = Sensor.create(id=2, sort=20, name="Sensor2")

#sensor1.sometemporaryvariable = "not so important to write to the database"

sensor1.save()

标签: peewee

解决方案


super()记住在覆盖子类中的方法时调用:

class Sensor(BaseModel):
    id = IntegerField(primary_key=True)
    sort = IntegerField()
    name = TextField()

    def __init__(self, **kwargs):
        self.sometemporaryvariable = "blabla"
        super().__init__(**kwargs)

推荐阅读