Reputation: 674
I am using Flask-sqlalchemy, I just configure it for no auto flush and no autocommit like this
db = SQLAlchemy(session_options={"autoflush": False, "autocommit": False})
But it only work for first session
user = User()
user.name = "John"
db.session.add(User) #No data insert to DB yet
db.session.commit() #user name john inserted
but after that
fruit = Fruit()
fruit.name = "Banana"
db.session.add(fruit) # <-- this data auto insert into sqlite DB without commit/flush
Any idea why i never call session.commit()/flush() the fruit instance already did the insert job ? The Auto Tear Down commit already set to False too
Upvotes: 2
Views: 2643
Reputation: 4302
You have to add this option expire_on_commit=False
session_options={"autoflush": False, "autocommit": False, "expire_on_commit": False}
Check out here: autocommit mode
Upvotes: 4