gpt4 book ai didi

python - Flask-sqlalchemy : sqlalchemy. exc.InvalidRequestError

转载 作者:行者123 更新时间:2023-11-29 21:03:00 35 4
gpt4 key购买 nike

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

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

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

测试.py

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()

但是,当我将代码拆分到不同的文件以使整个项目结构化时,出现了错误。

这是我的文件结构:

.
├── config.py
├── app.py
├── app
├── __init__.py
├── api.py
└── models.py
└── venv

config.py

SQLALCHEMY_DATABASE_URI = "mysql://root:pwd@localhost/test"

app.py

from app import app

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

__init.py__

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

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: Table 'player' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object.

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

sqlalchemy 似乎正在尝试重复创建表。

这是为什么?

最佳答案

尝试

from app import models

而不是

import models

您正在创建循环导入。看这个link有关循环导入的更多信息

关于python - Flask-sqlalchemy : sqlalchemy. exc.InvalidRequestError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37051896/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com