을 (참고로, 나는 pythonanywhere 그것을 실행하는거야). 또한 flask_sqlalchemy
(이전의 flask.ext.sqlalchemy
) 모듈을 사용하면 SQLAlchemy 기능에 액세스하는 다소 다른 메커니즘을 사용한다는 점도 알아야합니다. 즉, SQLAlchemy
의 최신 지식을 이전하려고 시도하면 flask_sqlalchemy
documentation에 대한 정보가 제공됩니다.
일반적으로 Flask 응용 프로그램을 만든 다음 SQLAlchemy
as in this example에 대한 호출로 전달합니다. 관련 코드는 아래와 같습니다. 당신은 다음과 같은 방법으로 테이블/모델을 정의 할 수 있습니다
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
는 db
객체는 현재 속성과 Model
, Column
및 다양한 데이터 유형이있다.
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True)
email = db.Column(db.String(120), unique=True)
def __init__(self, username, email):
self.username = username
self.email = email
def __repr__(self):
return '<User %r>' % self.username
단순히 모듈에서 그들을 수입하고이 규정 사용하는 것보다 오히려 db
네임 스페이스 내부의 다양한 이름을 한정 나를 강제로하기 때문에 개인적으로,이 특정 액세스 모델을 좋아 아니지만, 그것을 작동하는 것 같다 (적어도 상대적으로 복잡하지 않은 데이터베이스의 경우).
경험 많은 SQLAlchemy 사용자는 예상치 못한 스레드/웹 세션 상호 작용으로 인해 미묘한 버그에 취약해질 수 있지만 표준 액세스 메커니즘을 사용하는 것이 좋습니다. 또한 여러 데이터베이스를 배포하는 것이 까다로울 수 있다고 들었습니다. 나는 이것에 대한 직접적인 증거가 없으니, 일화로 간주하십시오.
가상 환경에 SQLAlchemy를 설치 했습니까? – SumanKalyan
이 동작은 분명히 'flask_sqlachemy'를 명백하게 처리하지 않은 것처럼 "native"또는 "real"'sqlalchemy' 인 것처럼 처리하려고 시도한 것이 분명합니다. ['flask_sqlachemy' 문서] (http://flask-sqlalchemy.pocoo.org/2.1/)에서 권장하거나 문서화 한 코드는 없습니다. 차이점에 명시 적으로 플래그가 지정되어 있으면 도움이 될 것입니다. 처음 플라스크를 사용했을 때와 똑같은 실수를 저질 렀습니다. – holdenweb