我有一个基本脚本,它创建一组Player类对象,然后将它们保存到我的DB中(使用SQLAlchemy)。我的主要方法看起来像这样:
def main():
#create engine (for use by base and session)
engine = databaseFunctions.createEngine()
#create session
session = databaseFunctions.createSession(engine)
databaseFunctions.updateEntireDB(allPlayers, session)
现在我已将其更改为:
def main():
#create engine (for use by base and session)
engine = databaseFunctions.createEngine()
#create session
session = databaseFunctions.createSession(engine)
#list all players in DB
databaseFunctions.allPlayers(session)
在运行带有第一个定义的main()之后,我关闭了我的shell,重新打开并使用新定义运行main()。我的所有数据库对象似乎都正确打印(所以看起来它们会在会话创建之间保持不变)。
运行一次函数到#34;初始化DB"是否正常?然后只更新它(假设它只需要更新)?在使用初始化代码运行它之后改变我的主程似乎是不好的做法...
答案 0 :(得分:1)
对于您的第一个问题,是的,这是完全正常的,但您肯定希望将其作为应用程序的一部分提供初始化/迁移步骤。假设您想将此作为databaseFunction
模块的一部分,您可能需要这样的内容:
在databaseFunctions.py
def checkDB(engine):
session = createSession(engine)
# use the session here to check the database
# return True if the tables for your app are properly created/updated
# ... your database functions.
在入口点模块中:
def main():
engine = databaseFunctions.createEngine()
session = databaseFunctions.createSession(engine)
# could be rolled into databaseFunctions
if not databaseFunctions.checkDB():
databaseFunctions.updateEntireDB(allPlayers, session)
# list all players in DB
databaseFunctions.allPlayers(session)
您可以考虑查看sqlalchemy
Session API上的文档。