【问题标题】:Where does SQLAlchemy filtering for PostgreSQL server happen? (flask-sqlalchemy)PostgreSQL 服务器的 SQLAlchemy 过滤发生在哪里? (烧瓶-sqlalchemy)
【发布时间】:2020-05-09 18:13:04
【问题描述】:

我是一名业余 Web 开发人员,在我的应用程序中越来越多地使用 PostgreSQL 服务器。由于我试图将成本保持在最低甚至 0,因此我一直在寻找 PostgreSQL 托管服务的选项,这些服务可能比我在 Heroku Postgres 中提供的免费 10.000 行多一点。我一直在研究适用于 PostgreSQL 的 Google Cloud SQL 和 AWS RDS。两者看起来都不错,但我想问问社区他们认为哪个更好/更便宜。另外,一个更普遍的问题: GCloud 对网络收取费用:x 美分/gb 转移到区域外。为了最小化传输的数据大小,我一直在考虑优化我的 SQLAlchemy 查询,到目前为止看起来像这样:

db = SQLAlchemy(app)
data = User.query.all()
filtered data = filtered_data(data, some_criterium)

这会是更好的方法吗? cls.query.filter_by() 是在 PostgreSQL 主机上还是本地过滤数据?

data = User.query.filter_by(username="some_username").first()

感谢任何愿意提供意见的人。

【问题讨论】:

    标签: python postgresql amazon-web-services flask-sqlalchemy gcloud


    【解决方案1】:

    session.query 及其方法总是返回一个新的query 对象。在实践中,这意味着 SQLAlchemy 在 Python 应用程序中构造和更新 SQL 查询的表示,直到查询被迭代或调用像 .first.one.all 这样的方法:此时 SQL 查询在数据库服务器中执行。

    通常,在数据库服务器中过滤结果会比在 Python 中更快,因此您应该更倾向于在数据库服务器中进行过滤而不是在 Python 代码中进行过滤。

    【讨论】:

      猜你喜欢
      • 2012-12-29
      • 2022-01-14
      • 2022-01-14
      • 1970-01-01
      • 2014-07-20
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多