mysql - 使用 sqlalchemy 和 pyro 进行 session 管理

标签 mysql session sqlalchemy pyro

我实际上是在使用 SQLAlchemy 与 MySQL 和 Pyro 来制作服务器程序。许多客户端连接到此服务器以发出请求。程序只提供MySQL数据库的信息,有时会做一些计算。

为每个客户创建一个 session 还是为每个客户使用相同的 session 更好?

最佳答案

你想要的是一个scoped_session .

好处是(与客户端之间的单个共享 session 相比):

  • 无需锁定
  • 支持的交易
  • 到数据库的连接池(由 SQLAlchemy 隐式完成)

如何使用它

您只需创建 scoped_session:

Session = scoped_session(some_factory)

并在你的 Pyro 方法中访问它:

class MyPyroObject():
    def remote_method(self):
         Session.query(MyModel).filter...

幕后花絮

上面的代码保证 session 根据需要创建和关闭。 session 对象会在您第一次在线程中访问它时创建,并在线程完成后被删除/关闭(ref)。由于每个 Pyro 客户端连接在默认设置下都有自己的线程(不要更改它!),每个客户端将有一个 session 。

关于mysql - 使用 sqlalchemy 和 pyro 进行 session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14334561/

相关文章:

php - 通过php优化MySQL数据库

MySQL 在插入时自动增加第二列中的复制值

Mysql 查找两个日期列之间开始和结束日期范围的出现次数

python - 如何在 SqlAlchemy 中查询具有分钟/小时步长间隔的行?

python - 在 SQLALchemy 中创建具有多态性的自引用表

mysql - 未使用数据表排序的日期

php - CakePHP 的授权超时问题

node.js - 如何仅在经过身份验证后才提供 session ?任何其他中间件命令都不起作用

java - 通过 session 变量存储数据

python - 如何在flask_sqlalchemy 中使用SQLite 的UPSERT(或ON CONFLICT)?