我正在开发一个 Python 应用程序,其中的大部分功能将与 MySQL 数据库中的特定表进行交互(创建、读取、更新和删除)。我知道我可以使用以下代码查询这个特定的表:
engine = create_engine(
f"mysql+pymysql://{username}:{password}@{host}:{port}",
pool_pre_ping=True
)
meta = MetaData(engine)
my_table = Table(
'my_table',
meta,
autoload=True,
schema=db_name
)
dbsession = sessionmaker(bind=engine)
session = dbsession()
# example query to table
results = session.query(my_table).filter(my_table.columns.id >=1)
results.all()
但是,我不明白如何使这些定义(引擎、元数据、表、会话)对我的所有函数具有全局性。我应该在 init.py 中定义这些东西,然后将它们作为函数参数传递吗?我应该定义一个大类并在类初始化期间初始化它们吗?
我的目标是能够随时在我的任何函数中查询该表,而不必担心连接是否已断开。根据{{3}}:
<块引用>一次,在您的应用程序的全局范围内的某个地方。它应该被视为应用程序配置的一部分。如果您的应用程序在一个包中有三个 .py 文件,例如,您可以将 sessionmaker 行放在您的 init.py 文件中;从那时起,您的其他模块会说“from mypackage import Session”。这样,其他人只使用 Session(),而该会话的配置由该中心点控制。
好的,但是 engine
、table
和 meta
怎么样?我需要担心这些吗?