【发布时间】:2015-08-24 21:12:57
【问题描述】:
我有一个大型应用程序,它有多个数据库,具有相同的架构。什么是实现的最佳解决方案,所以我可以让用户动态地在数据库之间切换以进行查询。为每个数据库创建一个引擎不是解决方案,因为我收到“连接太多”的 postgres 错误。这里的主要问题是创建了太多引擎,那么有没有办法在使用后删除引擎?数据库的数量将是数千个,同时拥有数百个用户。
谢谢。
编辑:这是连接代码
engine = create_engine(datbase_uri)
session = sessionmaker(bind=engine)
^每次需要连接到特定数据库时都会执行此操作。并且是动态完成的(当用户在应用程序中请求时)。问题是多次执行此操作时,会出现“连接过多”错误。
关闭引擎的最佳方法是什么?
【问题讨论】:
-
使用多个 Postgres 模式(即 Postgres 中的命名空间功能,而不是表模式)并让您的查询全部完全限定模式,或者动态设置 search_path。
-
目前的实现使用了多个数据库同一个schema,有没有基于此的解决方案?
-
添加的代码片段。
-
"每次需要连接到特定数据库时都会这样做"
-
这可能是问题的解决方案。
标签: python database postgresql flask sqlalchemy