Насколько я знаю из проведенного мною исследования, типичный способ определения таблицы с использованием PonyORM в Python выглядит следующим образом:
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
от sh до определение таблицы без использования специфицированного c экземпляра базы данных в абстрактном общем виде, и подключите его к экземпляру, когда мне нужно.
есть ли способ сделать это?
концепция (предположительно, не настоящий исполняемый код):
# SampleAbstractTable.py
from pony.orm import *
class SampleAbstractTable(Database):
sample_int_field = Required(int)
sample_string_field = Required(str)
# ...
# main.py
from pony.orm import *
import SampleAbstractTable
db = Database()
# Database connection ...
db.connectTables((SampleAbstractTable.SampleAbstractTable, ...))
db.generate_mapping(create_tables=True)
РЕДАКТИРОВАТЬ:
У меня есть одна идея - создать класс-обертку для базы данных, которую я sh буду использовать с определенной группой таблиц, и определить таблицы в 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)
, но тогда у меня возникают проблемы с доступом к таблицам базы данных ...