Python PonyORM数据库表动态定义
据我所做的研究所知,在Python中使用PonyORM定义表的典型方法如下:Python PonyORM数据库表动态定义,python,sql,database,oop,ponyorm,Python,Sql,Database,Oop,Ponyorm,据我所做的研究所知,在Python中使用PonyORM定义表的典型方法如下: from pony.orm import * db = Database() # Database connection ... class SampleTable(db.entity): sample_int_field = Required(int) sample_string_field = Required(str) # ... db.generate_mapping(create_ta
from pony.orm import *
db = Database()
# Database connection ...
class SampleTable(db.entity):
sample_int_field = Required(int)
sample_string_field = Required(str)
# ...
db.generate_mapping(create_tables=True)
我的问题:这使用db.entity
我希望在不使用特定数据库实例的情况下,以抽象的一般方式定义一个表,并在需要时将其连接到实例
有没有办法做到这一点
概念(可能不是真正的可运行代码):
编辑:
我的一个想法是为我希望与某一组表一起使用的数据库创建一个包装类,并在init中定义表,因为我希望动态定义表的全部目的是将数据库实例的创建与表类的定义分开,即:
from pony.orm import *
class sampleDatabase:
def __init__(self):
self._db = Database()
# Database connection ...
class TableA(db.entity):
# ...
class TableB(db.entity):
# ...
self._db.generate_mapping(create_tables=True)
但是我在访问数据库表时遇到了问题…首先,您使用的是实体,而不是表。他们不是一回事 您的问题可以通过定义类似factory的函数来解决
def define_entities(db):
class Entity1(db.Entity):
attr1 = Required(str)
... and so on
然后,当您创建数据库时,只需调用
db = Database(...)
define_entities(db)
db = Database(...)
define_entities(db)