격리 수준으로 플라스크-의 정밀한 웹 애플리케이션을 빨리 빌
-
21-12-2019 - |
문제
난 이해하는 데 문제가 어떻게 데이터베이스의 격리 수준을 일으로 플라스크-의 정밀한 웹 애플리케이션을 빨리 빌며,특히 방법 말 commit 변경 또는 세션이 있습니다.여기에는 컨텍스트 내 문제의:
내가 사용하여 플라스크-밀한 웹 애플리케이션을 빨리 빌드를 위해 플라스크를 가진 프로젝트 MySQL 데이터베이스입니다.여기에 어떻게 구성되어 내는 프로젝트
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://user:passwd@localhost/mydb'
SQLALCHEMY_MIGRATE_REPO = '/path/to/myapp/db_repository'
CSRF_ENABLED = True
SECRET_KEY = 'this is a secret'
의 창조 db
체에서 나 __init__.py
파일:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object('config')
db = SQLAlchemy(app)
저는 정의된 모델 등 Printer
하나:
from myapp import db
...
class Printer(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120))
def __init__(self, name):
self.name = name
나의 주위에는 파이썬 터미널,그리고 비록에 대해 읽어 Read committed
isolation 수준의 정밀한 웹 애플리케이션을 빨리 빌드,내 얼굴을 다음과 같은 문제입니다.여기에 무엇이 내가 내 console:
>>> from myapp import app
>>> from myapp.models import Printer
>>> import config
>>> from flask.ext.sqlalchemy import SQLAlchemy
>>> app.config.from_object('config')
>>> db = SQLAlchemy(app)
>>> for printer in Printer.query.all():
... print printer.name
...
Circle
Mww
>>> p = Printer('dummy')
>>> db.session.add(p)
>>> db.session.commit()
>>> for printer in Printer.query.all():
... print printer.name
...
Circle
Mww
>>>
찾아 볼 때 데이터베이스,나이 변경되었습 투:
mysql> SELECT * FROM printer;
+----+--------+
| id | name |
+----+--------+
| 1 | Circle |
| 2 | Mww |
| 3 | dummy |
+----+--------+
3 rows in set (0.00 sec)
면 나는 파이썬은 터미널,다시 열고 그 결과를 읽습니다.쿼리가 있습니다.모든(),나의 변경 내용이 나타납니다.
하지만 내가 이해 정밀한 웹 애플리케이션을 빨리 빌기 위해 변경 될 수선 그리고/또는 세션 종료하지 왜 내가 읽을 수 없는 나이 변경 후에 db.session.commit()
문 얼마나 세션을 마(나도 db.session.close()
, 를 읽고,후 데이터베이스하지 않는 더 나은 결과를 제공)
당신의 도움을 주셔서 감사합니다!
해결책
어떻게 사용하는 경우에는 정밀한 웹 애플리케이션을 빨리 빌 버전의 쿼리가?
db.session.query(Printer).all()
는지 궁금하네요가 있는 경우 두 개의 세션을 진행:
- 하나 앱을 설정하는
Printer.query.all()
은 이야기 - 당신이 사용하는 코드 조각을 만들어 그
db = SQLAlchemy()
전화
그것은 이유를 설명 db.session.commit()
지 않을 내뿜는 데이터 Printer.query.all()
니다.