flask

本文展示了如何使用Flask框架创建Web应用,配置SQLAlchemy进行数据库交互,包括初始化App,设置数据库连接,定义数据库映射类,以及错误处理和API路由。同时,文中还涵盖了数据库的增删查改操作和特定查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1-1. app

1-1-1. _ _ init _ _.py

import config
from flask import Flask

app = Flask(__name__)
app.config.from_object(config)
charset=utf8mb4'# SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://crawler_user:Urun20181012@202.98.248.81:28817/urun_postingmachine?
charset=utf8mb4'

# 如果设置成 True,SQLAlchemy 将会记录所有 发到标准输出(stderr)的语句,这对调试很有帮助。   	SQLALCHEMY_ECHO = True

# 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。这需要额外的内存, 如果不必要的可以禁用它。
SQLALCHEMY_TRACK_MODIFICATIONS = False

1-1-2. api.py

from . import app
from flask import jsonify
from flask import request
from flask import redirect, url_for
from flask import send_file
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
with app.app_context():
    db.init_app(app)

错误时候

@app.errorhandler(404)
def not_found(error):

一般使用

@app.route('/commentlist/get', methods=['GET', 'POST'])
@app.route('/CommentList/get', methods=['GET', 'POST'])
def get_comment_list():

url 后接方法名时

@app.route('/query/<query_name>', methods=['GET', 'POST'])
def common_query(query_name):
    query_obj = query_name.lower()
    if query_obj not in {'account', 'website', 'board', 'task'}:

request

用 法作 用
redirect(url_for(‘get_api_doc’))跳转到,函数名为get_api_doc
send_file(‘…/apidoc/api_all.html’)返回…/apidoc/api_all.html,路径下的api_all.html
request.args.to_dict()请求url后的参数转化为字典形式(params形式)
request.json(以json格式发送的)-(content-Type=application/json)-(raw) – 数据
jsonify(ret_data)将ret_data,以json的格式返回 【return jsonify(ret_data)】
request.form.to_dict()以表格的形式发送的 – 数据
request.method请求的方法:【if request.method == ‘GET’:】
request.files.get(‘file’)发送文件时,获取文件中键名为file

2-1映射类表

import config
from datetime import datetime
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

def create_app():
    app = Flask(__name__)
    app.config.from_object(config)
    with app.app_context():
        db.init_app(app)
    return app
创建表
import config
from datetime import datetime
from flask import Flask
from extension import db

def create_app():
    app = Flask(__name__)
    app.config.from_object(config)
    with app.app_context():
        db.init_app(app)
    return app

class Account(db.Model):
    """
    account表映射类
    """
    __tablename__ = 'account'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_name = db.Column(db.String(200), nullable=False)
    password = db.Column(db.String(500), nullable=False)
    website_id = db.Column(db.Integer)
    company_id = db.Column(db.Integer)
    server_tag = db.Column(db.String(200))
    state = db.Column(db.Integer, default=1)
    status = db.Column(db.Text)
    mobile = db.Column(db.String(20))
    proxy = db.Column(db.String(100))
    # 记录修改时间
    update_time = db.Column(db.DateTime, default=datetime.now, onupdate=datetime.now, nullable=False)
    # 记录入库时间
    addon = db.Column(db.DateTime, default=datetime.now, nullable=False)

    # 新加入账号默认是state=1不可用的
    def __init__(self, user_name, password, website_id, company_id=0, server_tag='', state=1, status='', mobile='', proxy=None):
        self.user_name = user_name
        self.password = password
        self.website_id = website_id
        self.company_id = company_id
        self.server_tag = server_tag
        self.state = state
        self.status = status
        self.mobile = mobile
        self.proxy = proxy

    def __repr__(self):
        # %r 采用repr()显示字符串
        return '<%s => %s>' % (self.__class__.__name__, self.user_name)

更新表
account_temp = Account(new_username, password, website_id, company_id, server_tag, mobile=mobile, proxy=proxy)
db.session.add(account_temp)
db.session.commit()

查询表

account_temp = Account.query.filter_by(website_id=website_id, company_id=company_id).all()
 account_temp = Account.query.filter_by(**filter_args).first()
account_obj = Account.query.filter_by(website_id=website_id)
》total = account_obj.count()
account_obj = Account.query.get(account_id)
 # 筛选出所有发帖<2>和转发<5>任务成功的帖子
 task_result_list = TaskResult.query.join(Task, TaskResult.task_id == Task.id) \
      .filter(Task.process_type.in_((2, 5)), db.cast(TaskResult.update_time, db.DATE) <= db.cast(yesterday, db.DATE),TaskResult.state == 0).all()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值