Ваш курсор инициализируется в экземпляре приложения, поэтому выполненные запросы сохраняются в экземпляре только для чтения, поэтому изменения, отраженные в базе данных, остаются постоянными внутри экземпляра.
Существует несколько обходных путей для преодоления этой проблемы.
Я бы порекомендовал вам создать отдельный модуль для экземпляра базы данных и импортировать его по мере необходимости.
database.py
mydb = mysql.connector.connect(
host=cfg['host'],
user=cfg['user'],
passwd=cfg['password'],
database=cfg['database']
)
db = mydb.cursor()
app.py
from database import db
@app.route('/read')
def db_read():
db.execute('SELECT * FROM books;')
result = db.fetchall()
return render_template('read.html', result=result)