python - flask_SQLAlchemy 和蓝图
问题描述
我是 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/____init___.py"
位置移到您创建app
对象的位置。
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 存在于应用程序上下文中,以便您的所有蓝图都可以访问它。
您可以在此处查看更多详细信息:http Flask.config
:
//flask.palletsprojects.com/en/1.1.x/api/#flask.Flask.config
推荐阅读
- javascript - 如何关闭“纱线显影”?
- php - Facebook Marketing Api - running on loop throws "AuthorizationException An unknown error has occurred." (on 2nd time)
- c# - 如何从 Azure AD 图形 api 获取下一页用户?
- javascript - Google Places API next_page_token 从不返回附近搜索的“OK”响应
- awk - awk 字段分隔符区分 -1、10 和 1
- python - Data mapping to dictionary or JSON?
- php - 您能帮我将看似 json 的值转换为逗号分隔的值吗?
- python - How to find the longest sequence of equal elements in a sequence?
- .net - 目前正在尝试学习 Microsoft.net 核心,但它给出了这个错误值不能为空。(参数“连接字符串”)
- javascript - javascript字符串中的HTML注释的奇怪行为