📜  FSADeprecationWarning:SQLALCHEMY_TRACK_MODIFICATIONS 会增加大量开销,将来默认禁用.将其设置为 True 或 False 以禁止显示此警告. - SQL (1)

📅  最后修改于: 2023-12-03 15:15:12.128000             🧑  作者: Mango

SQLALCHEMY_TRACK_MODIFICATIONS 会增加大量开销

在使用 SQLAlchemy 进行 SQL 数据库操作时,可能会遇到一个警告信息:FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS will be disabled by default in the future. Set it to True or False to suppress this warning. 这个警告信息告诉我们,SQLALCHEMY_TRACK_MODIFICATIONS 属性将来将默认禁用,并建议我们设置为 TrueFalse 来禁止显示此警告。

什么是 SQLALCHEMY_TRACK_MODIFICATIONS 属性?

SQLALCHEMY_TRACK_MODIFICATIONS 是 SQLAlchemy 中的一个配置属性,用于追踪对象的修改并发送信号。当你在应用中做出修改时,如增删改操作,会自动提交变动,但这个功能默认开启会带来一些性能开销。

潜在的开销

通过开启 SQLALCHEMY_TRACK_MODIFICATIONS,SQLAlchemy 会为每个修改的对象创建一个自动提交的事务。对于大型应用或频繁进行增删改操作的应用,这将带来一定的性能开销。

如何禁用警告

警告提示我们将来会禁用 SQLALCHEMY_TRACK_MODIFICATIONS,并建议我们设置为 TrueFalse 以禁止显示此警告。

我们可以通过以下方式禁用此警告:

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
设置为 True 还是 False?
  • 如果你确实需要追踪对象的修改,并且需要使用 SQLAlchemy 发送信号,那么你可以将 SQLALCHEMY_TRACK_MODIFICATIONS 设置为 True。但请注意,这可能会对性能产生一定的负面影响。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  • 如果你并不关心对象的修改追踪,并且不需要使用 SQLAlchemy 的信号功能,那么你可以将 SQLALCHEMY_TRACK_MODIFICATIONS 设置为 False。这将禁止显示警告,并且可以提高性能。
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
总结

在使用 SQLAlchemy 进行 SQL 数据库操作时,我们应该关注 SQLALCHEMY_TRACK_MODIFICATIONS 这个配置属性的影响。根据实际需求,我们可以选择将其设置为 TrueFalse,以禁止显示警告或优化性能。但请记住,在将来的版本中,SQLALCHEMY_TRACK_MODIFICATIONS 将默认禁用。