我正在尝试在模型文件夹中将这两个方面分开。我得到了: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
您可以创建任何您喜欢的架构。希望对您有所帮助!