Python Flask SQLAlchemy db.create_all()不创建数据库

Python Flask SQLAlchemy db.create_all()不创建数据库,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask 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_a

我似乎不明白为什么对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
然后,如果我启动交互式shell,您可以看到对象正确存在,并调用db.create_all()似乎可以工作,但不会导致创建数据库:

$ ./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()
>>> 
$。/manage.py shell
>>>从应用程序导入数据库
>>>从应用程序导入模型
>>>应用程序
>>>分贝
>>>模型
>>>处长(模型)
['MyTestClass'、'uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
>>>db.create_all()
>>> 

关于为什么不创建数据库有什么想法吗?

设置应该是
SQLALCHEMY\u database\ustrong>URI
,而不是
URL
。运行此行时,您可以看到db没有正确的uri:

>>> db
<SQLAlchemy engine='sqlite://'>
>>db
它显示Flask SQLAlchemy默认为内存中的sqlite数据库。更改设置,它将工作

>>> db
<SQLAlchemy engine='sqlite://'>