4
db.create_all()에 대한 호출이 작동하지 않는 이유를 모르겠습니다.플라스크 SQLAlchemy db.create_all() 데이터베이스를 만들지 않음
from flask import Flask
from config import config
from flask.ext.sqlalchemy import SQLAlchemy
# create the database object
db = SQLAlchemy()
# this function is the application factory
def create_app(environment):
app = Flask(__name__)
app.config.from_object(config[environment])
db.init_app(app)
from bp_root import bp_root
from bp_aws import bp_aws
app.register_blueprint(bp_root, url_prefix='/')
app.register_blueprint(bp_aws, url_prefix='/aws')
return app
그럼 내가 응용 프로그램 패키지 내부 models.py이 :
내가 다음 초기화와 앱 패키지가
from datetime import datetime
from . import db
class MyTestClass(db.Model):
__tablename__ = 'mytesttable'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(64), nullable=False, unique=True, index=True)
username = db.Column(db.String(64), nullable=False, unique=True, index=True)
is_admin = db.Column(db.Boolean)
password_hash = db.Column(db.String(128))
location = db.Column(db.String(64))
member_since = db.Column(db.DateTime, default=datetime.utcnow)
bio = db.Column(db.Text())
def __init__(self, email, username):
self.email = email
self.username = username
def __repr__(self):
return '<User %r>' % self.username
의 app.config 다른 것들 사이에, 포함을, 다음
'SQLALCHEMY_DATABASE_URL': 'sqlite:////Users/xxxxx/projects/yyyyy/data-dev.sqlite'
그렇다면 대화 형 셸을 실행하면 개체가 적절하게 존재한다는 것을 알 수 있습니다.) (db.create_all을 위해 전화 d는 일을 나타납니다,하지만 데이터베이스 생성 결과 :
$ ./manage.py shell
>>> from app import db
>>> from app import models
>>> app
<Flask 'app'>
>>> db
<SQLAlchemy engine='sqlite://'>
>>> models
<module 'app.models' from '/Users/xxxxx/projects/yyyyy/app/models.py'>
>>> dir(models)
['MyTestClass', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'datetime', 'db']
>>> db.create_all()
>>>
데이터베이스가 만들어지고되지 않는 이유에 대한 어떤 생각?
하, 네. 내 코드를 쳐다보고 1 시간을 보냈다. 표시된 SQLAlchemy 출력이 메모리 내장 데이터베이스임을 나타 냈습니다. 이제 난! 눈의 두 번째 세트를 가져 주셔서 감사합니다! – David
올바르게 설정되었을 때'db.engine'을 보면 입력 한 uri가 표시됩니다. – davidism