저는 술병을 sqlalchemy와 sqlite db와 함께 사용하고 있습니다. 나는 html에서 내 .py 파일로 일부 데이터를 보내는 2 아약스있다.SQLite : 데이터베이스가 잠겼습니다
문제는이 두 가지 작업 중 하나를 수행 할 때마다 발생하며 두 번째 작업은 db 잠금 때문에 사용할 수 없게됩니다. 또한, 처음 선택한 작업이 삭제 될 경우, 어떤 작업이 선택 되더라도 예외 발생은 발생하지 않습니다. 첫 번째로 추가 할 경우 함수가 비슷해 보이기 때문에 제한없이 추가 할 수 있습니다.
다른 방법으로 세션을 닫으면 시간 제한을 시도했지만 결과는 항상 같습니다.
여기서 두 함수-핸들러이다 :이 예외가 아닌 닫힌 연결로 인한 것으로 I 읽은
app = Flask(__name__)
csrf = CSRFProtect(app)
app.config.from_object('config')
db = SQLAlchemy(app)
import forms
import models
@app.route('/delete', methods = ['GET', 'POST'])
def delete():
if request.method == "POST":
if request.form['type'] == "delete":
print("delete")
engine = create_engine(SQLALCHEMY_DATABASE_URI)
Session = sessionmaker(bind=engine)
session = Session()
try:
print("try")
requested = request.form['id']
print(requested)
models.Income.query.filter(models.Income.id == requested).delete()
session.commit()
except:
print("rollback")
session.rollback()
finally:
print("fin")
session.close()
ellist = models.Income.query.all()
return render_template("incomeSection.html", list=ellist)
@app.route('/add', methods=['GET', 'POST'])
def add():
if request.method == "POST":
if request.form['type'] == "add":
print('add')
engine = create_engine(SQLALCHEMY_DATABASE_URI)
Session = sessionmaker(bind=engine)
session = Session()
try:
print("try")
newItem = models.Income(name=request.form['name'], tag=request.form['tag'],
account=request.form['account'],
date=date(*(int(i) for i in request.form['date'].split("-"))))
session.add(newItem)
session.commit()
except:
print('rollback')
session.rollback()
finally:
print("fin")
session.close()
ellist = models.Income.query.all()
print(ellist)
return render_template("incomeSection.html", list=ellist)
하지만 매의 .close()는 마지막 블록이있다. 문제는 db = SQLAlchemy(app)
일 수 있다고 생각하지만 그 경우 문제를 해결하는 방법을 모르겠습니다. 왜냐하면 나는이 변수를 사용하여 forms.py에있는 db와 연결할 수 있으며, 여기서 나는 폼 템플릿을 가지고 있고 models.py 내에서 db 내에서 테이블을 정의했다.