如何使用 Flask 和 SQLAlchemy 在数据库中存储 API 请求

巴里29

我正在尝试将我的 API 请求数据存储在我的数据库中。我正在从请求中查找某些字段,即要存储在数据库中的 URL、REMOTE_ADDR。我使用 Flask 和 sqlalchemy 作为我的 api 和数据库连接到 mysql 数据库。任何帮助,将不胜感激。

我创建了一个日志模型来将 id、url、remote_addr 字段存储在数据库中,并且我编写了一个函数来读取请求并将其映射到模型中。在尝试实现这一目标时,我不知道我哪里不正确。我包括我的 app.py、log.py、loggerapi.py。

应用程序

from flask import Flask, jsonify, send_from_directory
from flask_sqlalchemy import SQLAlchemy

from test import test_api
from usersapi import users_api
from authusersapi import authusers_api
from loggerapi import create_log
from database.db import db_uri

from flask_marshmallow import Marshmallow

import os

# Init app
app = Flask(__name__)

# config
app.config['SQLALCHEMY_DATABASE_URI'] = db_uri
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.config['SQLALCHEMY_ECHO'] = False

# Init db
db = SQLAlchemy(app)
db.create_all()

# Init ma
ma = Marshmallow(app)

# add urls
app.register_blueprint(test_api, url_prefix='/test')
app.register_blueprint(users_api, url_prefix='/users')
app.register_blueprint(authusers_api, url_prefix='/auth_users')

# logging
@app.before_request
def log_requests():
    create_log()

# Run the server
if __name__=='__main__':
    app.run(debug=True)

@app.route('/favicon.ico')
def favicon():
    return send_from_directory(os.path.join(app.root_path, 'static'),
                               'favicon.ico')

日志.py(模型)

from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

from datetime import datetime
import socket

db = SQLAlchemy()
ma = Marshmallow()

class Log(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    url = db.Column(db.String(100))
    remote_addr = db.Column(db.String(100))
    created_at = db.Column(db.DateTime, default=datetime.utcnow) # the current timestamp

    def __init__(self, url, remote_addr):
        self.url = url
        self.remote_addr = remote_addr
        
class LogSchema(ma.Schema):
    class Meta:
        fields = ('url', 'remote_addr', 'created_at')

loggerapi.py(创建日志并将其提交到数据库的函数)

from flask import request

from database.db import session_scope

from Models.Log import Log, LogSchema

log_schema = LogSchema(strict=True)
logs_schema = LogSchema(many=True, strict=True)

def create_log():
    with session_scope() as session:
        url = request.url
        remote_addr = request.remote_addr

        new_log = Log(url, remote_addr)
        
        print(new_log)
        session.add(new_log)
        session.commit()

        return log_schema.jsonify(new_log)

实际结果:“日志”表中没有数据

预期结果:“日志”表中的数据

更新:

我发现我错过了使用 Flask 的 before_request 功能的逻辑。我已经相应地更新了代码。谢谢鬣蜥。

巴里29

将此块添加到 app.py 的代码中以实际使用 before_request。

@app.before_request
def log_requests():
    create_log()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用 Flask 和 SQLAlchemy 在数据库中插入用户提供的值

来自分类Dev

Flask和sqlalchemy:使用数据库中存储的路径获取上载的文件

来自分类Dev

使用Flask和SQLAlchemy在Celery任务中未更新数据库

来自分类Dev

带SQLAlchemy的Flask WTForms:在数据库中存储表单时出现UnmappedInstanceError

来自分类Dev

使用Postgresql和Flask-SQLAlchemy将数据库性能提高COUNT(*)个

来自分类Dev

在Flask-SQLAlchemy中,我应该在哪里初始化和存储数据库对象?

来自分类Dev

使用Python,flask和SQLAlchemy如何将数据库查询的结果打印在HTML页面上?

来自分类Dev

laravel / 如何在数据库中存储带有请求的随机数

来自分类Dev

如何使用 Flask-SQLAlchemy 从数据库中仅选择某些列?

来自分类Dev

从wtforms和flask-sqlalchemy中的数据库查询中获取选择

来自分类Dev

从wtforms和flask-sqlalchemy中的数据库查询中获取选择

来自分类Dev

使用SQLAlchemy的Flask REST API中的整数范围

来自分类Dev

在flask和sqlalchemy中无法多次导入数据库对象

来自分类Dev

Flask:如何存储和检索绑定到请求的值

来自分类Dev

Flask:如何存储和检索绑定到请求的值

来自分类Dev

在 Flask 和 Bootstrap 中发布请求不将数据添加到数据库中

来自分类Dev

如何使用函数和 sqlalchemy 连接到数据库

来自分类Dev

尝试使用Flask和SQLAlchemy访问现有的MySQL数据库时收到“ No Such Table”错误

来自分类Dev

在Flask中使用SQLAlchemy创建数据库

来自分类Dev

使用flask-sqlalchemy动态链接到数据库

来自分类Dev

使用 wtforms 和 sqlalchemy 在数据库中生成用户的下拉列表

来自分类Dev

使用spring-mvc和hibernate将文件名存储在数据库中,而不是将文件本身存储在数据库中

来自分类Dev

无法使用 Flask 和 SQLAlchemy 插入行

来自分类Dev

尝试使用Java脚本从FLASK API请求数据(POST)

来自分类Dev

如何在数据库和django管理员中存储IP地址

来自分类Dev

如何在数据库中存储订单和产品?

来自分类Dev

如何在数据库中存储已付款和未付款订单?

来自分类Dev

Django:如何在数据库中存储日期列表和当天某人听的歌曲?

来自分类Dev

如何在数据库中存储和检索Django会话变量?

Related 相关文章

  1. 1

    使用 Flask 和 SQLAlchemy 在数据库中插入用户提供的值

  2. 2

    Flask和sqlalchemy:使用数据库中存储的路径获取上载的文件

  3. 3

    使用Flask和SQLAlchemy在Celery任务中未更新数据库

  4. 4

    带SQLAlchemy的Flask WTForms:在数据库中存储表单时出现UnmappedInstanceError

  5. 5

    使用Postgresql和Flask-SQLAlchemy将数据库性能提高COUNT(*)个

  6. 6

    在Flask-SQLAlchemy中,我应该在哪里初始化和存储数据库对象?

  7. 7

    使用Python,flask和SQLAlchemy如何将数据库查询的结果打印在HTML页面上?

  8. 8

    laravel / 如何在数据库中存储带有请求的随机数

  9. 9

    如何使用 Flask-SQLAlchemy 从数据库中仅选择某些列?

  10. 10

    从wtforms和flask-sqlalchemy中的数据库查询中获取选择

  11. 11

    从wtforms和flask-sqlalchemy中的数据库查询中获取选择

  12. 12

    使用SQLAlchemy的Flask REST API中的整数范围

  13. 13

    在flask和sqlalchemy中无法多次导入数据库对象

  14. 14

    Flask:如何存储和检索绑定到请求的值

  15. 15

    Flask:如何存储和检索绑定到请求的值

  16. 16

    在 Flask 和 Bootstrap 中发布请求不将数据添加到数据库中

  17. 17

    如何使用函数和 sqlalchemy 连接到数据库

  18. 18

    尝试使用Flask和SQLAlchemy访问现有的MySQL数据库时收到“ No Such Table”错误

  19. 19

    在Flask中使用SQLAlchemy创建数据库

  20. 20

    使用flask-sqlalchemy动态链接到数据库

  21. 21

    使用 wtforms 和 sqlalchemy 在数据库中生成用户的下拉列表

  22. 22

    使用spring-mvc和hibernate将文件名存储在数据库中,而不是将文件本身存储在数据库中

  23. 23

    无法使用 Flask 和 SQLAlchemy 插入行

  24. 24

    尝试使用Java脚本从FLASK API请求数据(POST)

  25. 25

    如何在数据库和django管理员中存储IP地址

  26. 26

    如何在数据库中存储订单和产品?

  27. 27

    如何在数据库中存储已付款和未付款订单?

  28. 28

    Django:如何在数据库中存储日期列表和当天某人听的歌曲?

  29. 29

    如何在数据库中存储和检索Django会话变量?

热门标签

归档