我需要在peewee
中创建两个表。表格完全相同,但其中一个是暂时的。
这是表模型的定义:
class my_table(Model):
user_id = BigIntegerField(primary_key = True)
created_date = DateTimeField(default=datetime.datetime.now)
class Meta:
database = db
现在我还需要创建一个临时表my_table_temp
,它是my_table
的精确副本。
然而我注意到,如果我my_table_temp = my_table
{my} my_table_temp.create_table()
我实际上在我的数据库中创建了一个名为my_table
的表。
有没有比冗余更好的方法
class my_table(Model):
user_id = BigIntegerField(primary_key = True)
created_date = DateTimeField(default=datetime.datetime.now)
class Meta:
database = db
class my_table_temp(Model):
user_id = BigIntegerField(primary_key = True)
created_date = DateTimeField(default=datetime.datetime.now)
class Meta:
database = db
答案 0 :(得分:3)
为什么不简单地扩展my_table
而不做任何其他事情,
class my_table(Model):
user_id = BigIntegerField(primary_key=True)
created_date = DateTimeField(default=datetime.datetime.now)
class Meta:
database = db
class my_table_temp(my_table):
pass
答案 1 :(得分:1)
扩展Wojciech的评论,为什么不使用例如
my_table_temp = type("my_table_temp", (my_table,), {} )
或者如果按照建议使用CamelCase,
MyTableTemp = type("MyTableTemp", (MyTable,), {} )
有关使用type
动态创建类的详细信息,请参阅此处:
https://docs.python.org/3/library/functions.html#type
答案 2 :(得分:1)
这个解决方案怎么样?
def create_table():
class TableClass(Model):
user_id = BigIntegerField(primary_key = True)
created_date = DateTimeField(default=datetime.datetime.now)
class Meta:
database = db
return TableClass
myTable = create_table()
myTempTable = create_table()