gpt4 book ai didi

python - Flask_SQLAlchemy 和蓝图

转载 作者:太空宇宙 更新时间:2023-11-03 20:23:16 25 4
gpt4 key购买 nike

我是 Python 新手,我一直在学习一些教程,现在我正在尝试自己制作一个带有 API 的网站。我正在使用 Flask、Flask_SQLAlchemy 和 Blueprints,并且我试图创建一个只能通过 API 访问的 SQLite3 数据库。 (我还有其他蓝图,称为 site 和 admin=

这是我的文件结构(仅适用于 API 部分,我认为网站和管理结构不相关,如果我错了请告诉我):

hspmng/
+-- run.py
+-- app/
+-- __init__.py
+-- api/
+-- __init___.py
+-- routes.py

代码:

/hspmng/run.py

from app import app
app.run (debug=True)

/hspmng/app/__init__.py

from flask import Flask
from app.api.routes import mod
from app.site.routes import mod
from app.admin.routes import mod

app = Flask(__name__)
app.register_blueprint(api.routes.mod, url_prefix='/api')
app.register_blueprint(site.routes.mod)
app.register_blueprint(admin.routes.mod, url_prefix='/admin')

/hspmng/app/api/__init__.py

文件为空

/hspmng/app/api/routes.py

我的想法是使用不同的文件来创建数据库,但我将其放入路由中只是为了测试它。

from flask import Blueprint
from flask_sqlalchemy import SQLAlchemy

mod = Blueprint('api', __name__)

mod.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
mod.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqllite3'

db = SQLAlchemy(mod)

class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50))
location = db.Column(db.String(50))


@mod.route('/getStuff')
def getStuff():
return '<p>API</p>'

数据库创建

要创建数据库,我在命令行中运行 python 并输入以下内容

from app import db

我收到以下错误

>>> from app import db
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/mnt/d/Projects/hspmng/app/__init__.py", line 2, in <module>
from app.api.routes import mod
File "/mnt/d/Projects/hspmng/app/api/routes.py", line 5, in <module>
mod.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
AttributeError: 'Blueprint' object has no attribute 'config'

你能帮我吗?

最佳答案

将您设置配置的以下两行移动到您创建 app 对象的 "app/____init___.py"
config 不是 Blueprint 类的一部分,它是 Flask 应用程序对象的一部分。

mod.config['SQLALCHEMY_TRACK_MODIFICATIONS']=False
mod.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqllite3'

“app/__init__.py”中你应该这样做。

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqllite3'

这样您的数据库 URL 就存在于应用程序上下文中,以便您的所有蓝图都可以访问它。

您可以在此处查看有关 Flask.config 的更多详细信息: http://flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.config

关于python - Flask_SQLAlchemy 和蓝图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58019713/

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