Setiap kali saya menjalankan aplikasi saya yang menggunakan Flask-SQLAlchemy, saya mendapatkan peringatan berikut bahwa SQLALCHEMY_TRACK_MODIFICATIONS
opsi tersebut akan dinonaktifkan.
/home/david/.virtualenvs/flask-sqlalchemy/lib/python3.5/site-packages/flask_sqlalchemy/__init__.py:800: UserWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning.
warnings.warn('SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True to suppress this warning.')
Saya mencoba mencari tahu apa yang dilakukan opsi ini, tetapi dokumentasi Flask-SQLAlchemy tidak jelas tentang apa yang menggunakan pelacakan ini.
SQLALCHEMY_TRACK_MODIFICATIONS
Jika disetel ke True (default) Flask-SQLAlchemy akan melacak modifikasi objek dan memancarkan sinyal. Ini membutuhkan memori ekstra dan dapat dinonaktifkan jika tidak diperlukan.
Bagaimana cara mengetahui apakah proyek saya memerlukan SQLALCHEMY_TRACK_MODIFICATIONS = True
atau apakah saya dapat menonaktifkan fitur ini dengan aman dan menghemat memori di server saya?
sumber
app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
, di mana aplikasi adalah aplikasi labu Anda yang dibuat menggunakanflask.Flask()
Penjelasan rinci Jeff Widman sangat sempurna.
Karena saya memiliki beberapa pertarungan copy'n'paste sebelum mendapatkan hak ini, saya ingin membuatnya lebih mudah untuk yang berikutnya yang akan ada di sepatu saya.
Di kode Anda, segera setelah :
Jika Anda ingin mengaktifkan modifikasi trek cukup tambahkan:
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
Jika tidak, jika Anda tidak menggunakan fitur ini, Anda mungkin ingin mengubah nilainya menjadi False agar tidak membuang sumber daya sistem. Ini masih akan membungkam peringatan karena Anda tetap secara eksplisit mengatur konfigurasi.
Berikut cuplikan yang sama dengan nilai False:
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
Terima kasih kepada Jeff Widman untuk saran dan detail tambahan ini.
sumber
False
sehingga Anda tidak membuang sumber daya sistem. Ini masih akan menonaktifkan peringatan karena Anda masih secara eksplisit mengatur konfigurasi.Jawaban di atas terlihat bagus. Namun, saya ingin menunjukkan baris ini dalam dokumentasi Flask-SQLAlchemy karena saya masih mendapatkan peringatan ini setelah mengatur
SQLALCHEMY_TRACK_MODIFICATIONS = False
konfigurasi aplikasi saya.Di halaman ini: http://flask-sqlalchemy.pocoo.org/2.3/config/
Dengan kata lain, pastikan untuk menyiapkan Anda
app.config
sebelum membuat database Flask-SQLAlchemy.Misalnya, jika Anda sedang mengonfigurasi aplikasi Anda untuk disetel
SQLALCHEMY_TRACK_MODIFICATIONS = False
:from flask import Flask app = Flask(__name__) app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)
sumber
Pastikan untuk menyetel properti konfigurasi aplikasi Anda SEBELUM Anda meneruskan aplikasi ke SqlAlchemy. Di bawah ini adalah contoh pengaturan koneksi ke server sql.
import os from flask import Flask from flask_sqlalchemy import SQLAlchemy SECRET_KEY = os.urandom(32) SERVER = 'MY_DB_SERVER' DATABASE = 'MY_DB_NAME' USERNAME = 'MY_DOMAIN\\MY_USERNAME' PASSWORD = '$ecretsSecretsarenofun...' # the office ref iykyk DRIVER = 'SQL SERVER' DATABASE_CONNECTION = f'MSSQL://{USERNAME}:{PASSWORD}@{SERVER}/{DATABASE}?driver={DRIVER};trusted_connection=yes' app = Flask(__name__) # set your config properties BEFORE passing the app to SQLAlchemy app.config['SECRET_KEY'] = SECRET_KEY app.config['SQLALCHEMY_DATABASE_URI'] = DATABASE_CONNECTION app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app)
sumber