首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-烧瓶-sqlalchemy: sqlalchemy.exc.InvalidRequestError

Python-烧瓶-sqlalchemy: sqlalchemy.exc.InvalidRequestError
EN

Stack Overflow用户
提问于 2016-05-05 13:27:14
回答 1查看 8.3K关注 0票数 0

我正在为我的iOS应用程序构建一个后端,我选择使用Flask框架。

对于数据库部分,我使用flask-sqlalchemy连接我的mysql数据库。

当我将所有测试代码放入一个单个文件中时,一切都正常。

test.py

代码语言:javascript
复制
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = "mysql://root:pwd@localhost/test"
db = SQLAlchemy(app)


class player(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.create_all()

但是,当我将代码分割成不同的文件以使整个项目结构化时,我就得到了一个错误。

这是我的文件结构:

代码语言:javascript
复制
.
├── config.py
├── app.py
├── app
    ├── __init__.py
    ├── api.py
    └── models.py
└── venv

config.py

代码语言:javascript
复制
SQLALCHEMY_DATABASE_URI = "mysql://root:pwd@localhost/test"

app.py

代码语言:javascript
复制
from app import app

if __name__ == '__main__':
    app.run(debug=True)

__init.py__

代码语言:javascript
复制
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

import config

app = Flask(__name__)
app.config.from_object("config")
db = SQLAlchemy(app)

import models
db.create_all()

models.py

代码语言:javascript
复制
from app import db

class player(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

当我运行__init__.py来创建models.py中的所有表时,我得到了错误

sqlalchemy.exc.InvalidRequestError:表'player‘已经为这个MetaData实例定义了。指定“extend_existing=True”以重新定义现有表对象上的选项和列。

当我检查数据库时,我发现创建了表player

看起来sqlalchemy试图反复创建表。

为什么会这样呢?

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 01:38:57

试一试

代码语言:javascript
复制
from app import models

而不是

代码语言:javascript
复制
import models

您正在创建一个循环导入。有关循环导入的更多信息,请参见此link

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37051896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档