python - SQLAlchemy:分叉代码中的 automap_base
问题描述
我开发了一个与 MySQL DB 交互的 API 服务器,它反映了它的模式,并且还被用于多个进程。我的数据库工作代码如下所示:
from sqlalchemy import MetaData
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm.session import Session
my_engine = create_engine_by_info(my_config)
metadata = MetaData(bind=my_engine)
Base: type = automap_base(metadata=metadata)
class User(Base):
__tablename__ = 'auth_user'
# Relation descriptions...
# Other classes...
Base.prepare(my_engine, reflect=True)
def find_user(field):
with Session(my_engine) as session:
query = session.query(User)
query = query.filter(User.field == field)
records = query.all()
for u in records:
return u
return None
它工作正常,直到进程被分叉:在子进程工作后,原始进程失去连接:Lost connection to MySQL server during query
。
我想我应该my_engine
为每个进程分开(例如,一些带有引擎字典的函数,其中键是 PID),但是如果我的类定义一开始就需要引擎,我该怎么做呢?也许我也可以在函数中移动类,但这将是一个地狱......那么,这里有什么好的解决方案?
解决方案
推荐阅读
- node.js - 如何为其他字段的每个值获取字段的不同值?
- docusignapi - 标记的 DocuSign SOAP API 设置默认值
- angular - 角度路由解析器 rxjs
- mysql - Keycloak/Docker 重新生成 MySQL 数据库表
- python - 在 Pandas DataFrame 中查找第一列匹配条件的矢量化方法
- android - 离子存储不适用于 Android 设备
- c# - 指示 Resharper 忽略 C# 的文件夹
- javascript - 用另一个指令包装 Angular 2+ 指令
- c# - 绑定到 UserControl 中 ComboBox 的 SelectedItem
- ios - 如何为 iPhone 获取新的 UDID 以在 Apple 门户中注册