python - 如何使用 python 有效地与另一个数据库交互

标签 python sql orm sqlalchemy

我有一个应用程序需要与另一个应用程序的数据库进行交互。我有读取权限,但没有写入权限。

目前我正在通过 pyodbc 使用 sql 语句来获取行并使用 python 操作数据。由于我不缓存任何内容,因此成本可能相当高。

我正在考虑使用 ORM 来解决我的问题。问题是,如果我使用像“sql alchemy”这样的 ORM,它是否足够智能来获取其他数据库中的更改?

例如sql alchemy 访问表并检索行。如果该行在 sql alchemy 之外被修改,它是否足够聪明来拾取它?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

编辑:为了更清楚

我有一个应用程序,它只是一个报告工具,让我们调用应用程序 A。

我有另一个处理各种金融交易的应用程序,称为应用程序 B。

A 可以访问 B 的数据库来检索交易并生成各种报告。有数十万笔交易。目前,我们正在 python 中手动缓存此信息,如果我们需要更新的报告,我们会刷新缓存。如果我们摆脱缓存,与计算相结合的 SQL 查询将变得不可扩展。

最佳答案

我认为 ORM 不能解决您的性能问题。默认情况下,ORM 往往比行 SQL 效率低,因为它们可能会获取您不会使用的数据(例如,当您只需要一个字段时执行 SELECT * ),尽管 SQLAlchemy 允许-对生成的 SQL 进行粒度控制。

现在要实现缓存机制,根据您的应用程序,您可以使用内存中的简单字典或专门的系统,例如 memcached 或 Redis。

为了保持缓存的数据相对新鲜,您可以定期轮询源,如果您的应用程序可以容忍一点延迟,这可能没问题。否则,您将需要对数据库具有写访问权限的应用程序,以便在发生更新时通知您的应用程序或缓存系统。

编辑:由于您似乎可以控制应用程序 B,并且您已经在应用程序 A 中拥有缓存系统,因此解决问题的最简单方法可能是在应用程序 A 中创建应用程序 B 可以调用的回调过期的缓存项目。两个应用程序都需要就识别缓存项目的约定达成一致。

关于python - 如何使用 python 有效地与另一个数据库交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7426564/

相关文章:

python - 分块处理大文件

php - sql 查询中的输入变量

java - 可以混合使用 session.save 和依赖于该实体保存的各种 HQL 更新吗

linq-to-sql - Linq to SQL 中的 ASP.NET MVC 查找表

c# - 模型验证异常 : Name 'AnonymousUID' cannot be used in type 'CodeFirstDatabaseSchema.AnonymousUID'

python - matplotlib中从右到左的水平条形图

python - 基于状态字段需要 bool 字段

python - 要求用户从列表中输入一个值并使用该值从另一个列表中提取

sql - 按特定日期间隔计数分组

sql - Excel 中使用 AND/OR 嵌套的复杂过滤器