我想通过工厂方法在 Pony ORM 中创建数据库实体,以避免类似表的代码重复。
这是我不完全工作的最小示例:
from pony.orm import *
def factory(db, tablename):
class TableTemplate(db.Entity):
_table_ = tablename
first_name = Required(str)
last_name = Required(str)
composite_index(first_name, last_name)
return TableTemplate
db = Database(provider='sqlite', filename=':memory:')
Table1 = factory(db, "TABLE_1")
# the following line produces the exception:
# pony.orm.core.ERDiagramError: Entity TableTemplate already exists
Table2 = factory(db, "TABLE_2")
db.generate_mapping(create_tables=True)
with db_session:
Table1(first_name="foo", last_name="bar")
可以通过使用创建具有动态名称的类来规避异常type
,但这不适用于composite_index
...
有没有使用 Pony ORM 的表工厂的好方法?