我用了一段时间的烧瓶设置,现在尝试在上面安装烧瓶博客模块。当前模块: -烧瓶炼金术 -烧瓶登录 -烧瓶博客(新)
我的应用程序.py看起来像这样:
from flask import Flask
from flask import session
from flask.ext.blogging import SQLAStorage, BloggingEngine
from flask.ext.login import LoginManager
from flask.ext.sqlalchemy import SQLAlchemy
'''
The main application setup. The order of things is important
in this file.
'''
app = Flask(__name__)
app.config.from_object('config.base')
app.config.from_envvar('APP_CONFIG_FILE')
'''
Initialize database
'''
db = SQLAlchemy(app)
'''
Initialize blogger
'''
storage = SQLAStorage(db=db)
blog_engine = BloggingEngine(app, storage)
最后两行是我添加的唯一新内容(除了导入)。突然间,我得到一个关于重复表名的错误:
^{pr2}$你知道我做错什么了吗?我找不到关于Flask Blog的文档,除了: http://flask-blogging.readthedocs.org/en/latest/
出现此错误是因为在
SQLAStorage.__init__
中有一行:这将查看您的数据库并为当前数据库中的所有表创建sqlalchemy表。在
因此,如果数据库包含名为“customer”的表,则代码中的行:
^{pr2}$将为您自动为一个名为“customer”的sqlalchemy表建模。在
现在。。。毫无疑问,您在某个地方有自己的数据库模型定义,可能在另一个python模块中,类似于:
由于这个类定义定义了一个名为“customer”的表,并且由于
SQLAStorage
已经定义了一个名为“customer”的表,所以只要导入您的类Customer
,就会出现异常。在解决此问题的方法有:
在实例化
SQLAStorage
之前导入数据库定义模块或者
告诉
SQLAStorage
使用它自己的元数据通过将
db
参数传递给SQLAStorage.__init__
,您就是在告诉它使用您的元数据。您只需传递engine
参数,它将创建自己的元数据。在相关问题 更多 >
编程相关推荐