我想創建一個類中使用Python peewee的數據庫。由於peewee在模型中使用了一個名爲meta的類,這導致了嵌套類。我的問題是,如何在類Meta中定義數據庫(= db)?有沒有更好的方法?類在Python中類類,如何共享信息
import peewee as pe
class DataBase():
class SensorType(pe.Model):
name = pe.CharField(max_length=255, unique=True)
class Meta:
database = db
def ___init___(self,filename='sensors.db'):
db = pe.SqliteDatabase(filename)
db.connect()
db.create_tables([self.SensorType],safe=True)
def add_sensor(self,typeName):
type, created = self.SensorType.get_or_create(name=typeName)
return type, created
def get_sensors(self):
return self.SensorType.select().order_by(self.SensorType.name)
if __name__ == '__main__':
myDb = DataBase()
myDb.add_sensor('Test')
for type in myDb.get_sensors():
print(type.name)
我發現在我的主類的__init__
函數中定義類能夠工作。但它可能不是首選的方法。
import peewee as pe
class DataBase():
def __init__(self,filename='sensors.db'):
db = pe.SqliteDatabase(filename)
db.connect()
class SensorType(pe.Model):
typename = pe.CharField(max_length=255, unique=True)
class Meta:
database = db
self.SensorType = SensorType
db.create_tables([self.SensorType],safe=True)
def add_sensor_type(self,typeName):
type, created = self.SensorType.get_or_create(typename=typeName)
return type, created
def get_sensor_types(self):
return self.SensorType.select()
if __name__ == '__main__':
myDb = DataBase()
myDb.add_sensor_type('Test')
for type in myDb.get_sensor_types():
print(type.id, type.typename)
更好的方法?是的,不要使用嵌套類。 –
我同意,這似乎不是一個好方法。在我的例子中,你有沒有提示如何避免它? –