如何单独创建db_session瓶中的表与小马 ORM 一起工作



我正在尝试在模型文件夹中将这两个方面分开。我得到了:pony.orm.core.ERDiagram错误:无法定义实体"来宾":数据库映射已经生成

这是代码

db_session.py *******

from pony import orm
from model.dbase import (Guest, Offer, Payment_method, Extra_services,
                     Voucher, Reservation, db)
db = orm.Database()
class GuestManager(object):
    @orm.db_session
    def show_guest(n):
        guest = Guest[n]
        return guest

dbase.py *****

from datetime import date
from pony import orm
db = orm.Database()
db.bind(provider='sqlite', filename='database.sqlite')
orm.sql_debug(True)
db.generate_mapping(create_tables=True)
class Guest(db.Entity):
    nome = orm.Required(str)
    surname = orm.Required(str)
    email = orm.Required(str, unique=True)

谢谢你的帮助。

这样的事情应该可以解决问题。

from pony import orm
from model.dbase import (Guest, Offer, Payment_method, Extra_services,
                         Voucher, Reservation, db)

class GuestManager(object):
    @orm.db_session
    def show_guest(n):
        guest = Guest[n]
        return guest

dbase.py *****

from datetime import date
from pony import orm
db = orm.Database()
db.bind(provider='sqlite', filename='database.sqlite')
orm.sql_debug(True)
class Guest(db.Entity):
    nome = orm.Required(str)
    surname = orm.Required(str)
    email = orm.Required(str, unique=True)
db.generate_mapping(create_tables=True)

您不希望每次都创建表,除非您从新数据库开始。

这是回购中关于此的好问题

您可以在

启动项目(通常是__init__.py文件(添加数据库初始化。

__init__.py

from datetime import date
from pony import orm
db = orm.Database()
def startup_database():
    db.bind(provider='sqlite', filename='database.sqlite', create_db=True)
    db.generate_mapping(create_tables=True)
    orm.sql_debug(True)
def main():
    startup_database() # If you have another methods, THIS LINE SHOULD BE THE LAST ONE
if __name__ == '__main__':
    main()

然后,在其他文件中定义模型:

models.py

from pony import orm
# 'db' variable it's included by own because it's on __init__.py file
# You could migrate to another file form __init__.py and import that module here
class Guest(db.Entity):
    nome = orm.Required(str)
    surname = orm.Required(str)
    email = orm.Required(str, unique=True)

并将管理器数据库创建到另一个文件中

manager.py

from pony import orm
from models import Guest # Add another models that you have
class GuestManager(object):
    @orm.db_session
    def show_guest(n):
        guest = Guest[n]
        return guest

您可以创建任何您喜欢的架构。希望对您有所帮助!

最新更新