当前位置:首页>python>Python Web应用框架Flask之原生和ORM方式

Python Web应用框架Flask之原生和ORM方式

  • 2026-02-01 02:12:29
Python Web应用框架Flask之原生和ORM方式
框架

Flask 是一个以微核心设计为基础的轻量级 Web 应用框架,它提供了 Web 开发的基础功能,如路由、请求处理和响应构建。这种设计哲学使得 Flask 既简单直观,易于新手上手,又足够灵活,能够满足经验丰富的开发者的需求。开发者可以根据自己的项目需求,选择性地添加各种 Flask 扩展,实现如数据库集成、表单验证等额外功能。

传参

GET 

通常用于请求服务器发送资源。

# get query参数@app.route('/get')def testGet():    data = request.args.get('data')    print('获取的data值:', data)    return "获取的data值:" + data# get path参数@app.route("/get/<int:id>")def testGetPath(id):    print(type(id))    return f"返回的数据 {id}"

路径参数

string:接受任何不包含斜杠的文本

int:接受正整数

float:接受正浮点数

path:接受包含斜杠的文本

  • 也可自定义转换器来实现复杂限制条件

POST

 通常用于向服务器提交要被处理的数据。

# post form-data参数@app.route("/post/form", methods=["POST"])def testPostForm():    username = request.form.get("username")    password = request.form.get("password")    print(username, password)    data = {        "username": username,        "password": password    }    return data
# post json参数# 学生信息类class Student():    def __init__(self, id, name, age):        self.id = id        self.name = name        self.age = age    def __repr__(self):        return f"Student[id={self.id},name={self.name},age={self.age}]"    def to_dict(self):        return {            'id'self.id,            'name'self.name,            'age'self.age        }@app.route("/post/json", methods=["POST"])def testPostJson():    id = request.json.get("id")    name = request.json.get("name")    age = request.json.get("age")    data = Student(id, name, age)    print(data)    # 返回参数需要格式化    return jsonify(data.to_dict())

PUT 

通常用于更新服务器上的现有资源。

# put path参数@app.route("/api/put/<int:id>", methods=["PUT"])def testPut(id):    print(type(id))    return f"上传参数 {id}"# put query参数@app.route("/api/put", methods=["PUT"])def testPuta():    data = request.args.get('data')    print(type(data))    return f"上传参数 {data}"# put json参数@app.route("/api/put/json", methods=["PUT"])def testPutJson():    name = request.json.get("name")    return name

DELETE 

通常用于删除服务器上的资源。

# delete query参数@app.route('/api/delete', methods=["DELETE"])  # 方式1def testDelete():    data = request.args.get('name')    print(data)    return data + "删除成功"# delete path参数@app.route("/api/delete/<int:ID>", methods=["DELETE"])  # 方式2def testDeletePath(ID):    print(type(ID))    return f"测试值为 {ID}"

request对象

request.method返回请求方法

request.args是获取url中的请求参数数据(key-value),主要是GET请求,请求参数在url中.也即请求链接中?后⾯的所有参数

request.args.get('a')  获取url中参数a的值,数据来源是url地址

request.form是获取form表单中的数据(key-value),原理跟request.args差不多,只是request.args数据来源是url,request.form的数据来源是表单

request.form.get('username')获取表单中key为username的值,也即获取在html页面中定义的元素的name值对应的输入值

request.cookies获取cookies信息

request.headres获取请求头信息

request.data如果处理不了的数据就变成字符串儿存在data里面

request.files获取上传或下载的文件信息

request.path获取请求文件路径:/myapplication/page.html

request.base_url获取域名与请求文件路径:http://www.baidu.com/myapplication/page.html

request.url获取全部url:http://www.baidu.com/myapplication/page.html?id=1&edit=edit

request.url_root获取域名:http://www.baidu.com/

重定向

  • 重定向到网页

from flask import Flask, request, redirect, jsonifyapp = Flask(__name__)@app.route('/home')def testGet():    # 重定向到百度首页    return redirect('https://www.baidu.com')if __name__ == '__main__':    app.run()
  • 重定向到内部

from flask import Flask, redirect, url_forapp = Flask(__name__)@app.route('/home')def testGet():    # 内部testOut函数    return redirect(url_for('testOut'))@app.route('/loginOut')def testOut():    return 'out'if __name__ == '__main__':    app.run()

异常处理

abord函数和错误处理

from flask import Flask, request, redirect, jsonifyapp = Flask(__name__)@app.route('/home')def testGet():    # 返回错误类型404    abord(404)    return None# 定义错误处理方法@app.errorhandler(404)def handle_404_error():    return redirect('https://www.baidu.com')if __name__ == '__main__':    app.run()

原生的数据库游标(CURSER)

python对postgres数据库增删查改操作(采用直接执行拼接的sql,生产有风险,存在sql注入,需注意使用场景)

import psycopg2# 连接数据库db = psycopg2.connect(        host="127.0.0.1",        port='5432',        user="postgres",        password="ccucc",        database= 'BHQ')# 创建游标cursor = db.cursor()def select_all():        # 直接获取全部数据        sql = 'SELECT * FROM "t_animal_info" ORDER BY "id";'        cursor.execute(sql)        print(cursor.fetchall()) #打印结果def select_all_one():        # 一次读取一条结果,循环获取所有记录        cursor.execute('SELECT * FROM "t_animal_info";')        while True:                singleData = cursor.fetchone()                if singleData is None:                        break                print(singleData)def select_num():        # 获取前N条记录        cursor.execute('SELECT * FROM "t_animal_info";')        print(cursor.fetchmany(2))def add_single():        # 插入单条数据        sql = 'INSERT INTO t_animal_info ("filename") VALUES (\'%s\')' % ("kangkang")        cursor.execute(sql)        print(f"成功插入{cursor.rowcount}条数据")        db.commit()def add_mutil():        # 批量插入数据        sql = 'INSERT INTO "t_animal_info" ("filename") VALUES (%s)'        # TypeError: not all arguments converted during string formatting(需要添加,)        cursor.executemany(sql, [('Tim',), ('Jane',)])        print(f"成功插入{cursor.rowcount}条数据")        db.commit()def update_single():        # 执行单条数据修改        sql='UPDATE "t_animal_info" SET "filename" = %s WHERE "filename" = %s'        cursor.execute(sql,('ccucc','Tom'))        db.commit()def update_mutil():        # 执行批量数据修改(!!!!注意变量位置,同sql语句占位对应!!!!)        sql = 'UPDATE "t_animal_info" SET "filename" = %s WHERE "filename" = %s'        cursor.executemany(sql, [('Tim''a'), ('Jane''s')])        db.commit()def delete_single(del_id):        # 执行单条数据删除        cursor.execute('DELETE FROM "t_animal_info" WHERE "id" = (\'%s\')' % del_id)        db.commit()def delete_mutil():        # 执行批量数据删除        sql = 'DELETE FROM "t_animal_info" WHERE "id" = %s;'        cursor.executemany(sql, [('4'), ('5'),('6'), ('7'), ('9')])        db.commit()# update_single()# add_mutil()# add_single()# delete_mutil()# delete_mutil()select_all()cursor.close()	#关闭游标db.close() #关闭链接

ORMSQLAlchemy

以下演示采用postgresql,需要先安装依赖库

pip install sqlalchemy psycopg2

连接数据库

Base = declarative_base()# 创建数据库连接"""postgresql://[用户名]:[用户密码]@[主机号]/[数据库名]"""url = 'postgresql://cqhy:cqhy123!@120.46.37.218/HY_reserve'engine = sqlalchemy.create_engine(url)Session = orm.sessionmaker(bind=engine)session = Session()

模型定义

# 定义数据模型class TestData(Base):    __tablename__ = "a_photo"    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)    name = sqlalchemy.Column(sqlalchemy.String(256), nullable=True)    uuid = sqlalchemy.Column(sqlalchemy.String(64), unique=True)    add_time = sqlalchemy.Column(sqlalchemy.DateTime())    data = sqlalchemy.Column(sqlalchemy.Text(), default='{}')    def __init__(self, name, uuid, data='{}', add_time=None):        self.name = name        self.uuid = uuid        self.data = data        self.add_time = add_time if None != add_time else datetime.datetime.now()

Column常用参数

序号参数名称说明
1name字段的名称,默认为类属性的名称。指定ORM模型的中某个属性映射到表中的字段名。如果不指定,那么会使用这个属性的名字来作为字段名。如果指定了,就会使用指定的这个值作为表字段名。这个参数也可以当作位置参数,在第1个参数来指定。
2type_字段的数据类型,如 Integer、String、Date 等。
3primary_key指定某个字段是否为主键,默认为 False。
4unique指定某个字段的值是否唯一,默认是False。
5nullable指定某个字段是否为空。默认值是True,可以为空。
6default默认值,当插入数据时没有提供该字段的值时使用。
7index是否创建索引,默认为 False。
8autoincrement是否为自增字段,仅适用于整数类型,默认为False。
9onupdate更新的时候执行的函数。在数据更新的时候会调用这个参数指定的值或者函数。在第一次插入这条数据的时候,不会用onupdate的值,只会使用default的值。常用于是字段(每次更新数据的时候都要更新该字段值)。

常用数据类型

序号数据类型说明
1Integer整形
2Float浮点类型
3Boolean传递True/False
4DECIMAL定点类型,具有小数点而且数值确定的数值
5enum枚举类型
6DateTime日期时间类型
7Date传递datetime.date()进去
8Time传递datatime.time()
9String字符类型,使用时需要指定长度,区别于Text类型
10Text文本类型
11LONGTEXT长文本类型

基本操作

# 建表def create_table():    with engine.connect() as connection:        # 创建表格(如果不存在)        Base.metadata.create_all(engine)# 插入一行数据def add_one():    # 创建会话    uuid_str = str(uuid.uuid4())    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    new_user = TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time)    # 添加到session:    session.add(new_user)    # 提交即保存到数据库:    session.commit()    # 关闭session:    session.close()# 插入多行数据def add_multi():    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    data_list = []    for i in range(10):        uuid_str = str(uuid.uuid4())        data_list.append(TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time))    # 添加到session:    session.add_all(data_list)    # 提交即保存到数据库:    session.commit()    # 关闭session:    session.close()# 查询操作def select_data():    # 创建Session    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:    user = session.query(TestData).filter(TestData.id == '1' and TestData.photo_name == 'qwe').one()    print('name:', user.name)    print('data:', user.data)    session.close()  # 关闭Session# 更新操作def update_data():    users = session.query(TestData).filter_by(name="zhangsan").first()  # 查询条件    users.data = '{"name": "lisi"}'  # 更新操作    session.add(users)  # 添加到会话    session.commit()  # 提交即保存到数据库    session.close()  # 关闭会话# 删除操作def delete_one():    delete_data = session.query(TestData).filter(TestData.id == "1").first()    if delete_data:        session.delete(delete_data)        session.commit()    session.close()  # 关闭会话# 删除表def drop_table():    session.execute(text('drop table tb_test_1'))    session.commit()    session.close()

完整示例

import timeimport uuidimport datetimeimport sqlalchemyimport sqlalchemy.orm as ormfrom sqlalchemy.orm import declarative_basefrom sqlalchemy import textBase = declarative_base()# 创建数据库连接url = 'postgresql://[用户名]:[用户密码]@[主机号]/[数据库名]'engine = sqlalchemy.create_engine(url)Session = orm.sessionmaker(bind=engine)session = Session()# 定义数据模型class TestData(Base):    __tablename__ = "a_photo"    id = sqlalchemy.Column(sqlalchemy.Integer, primary_key=True, autoincrement=True)    name = sqlalchemy.Column(sqlalchemy.String(256), nullable=True)    uuid = sqlalchemy.Column(sqlalchemy.String(64), unique=True)    add_time = sqlalchemy.Column(sqlalchemy.DateTime())    data = sqlalchemy.Column(sqlalchemy.Text(), default='{}')    def __init__(self, name, uuid, data='{}', add_time=None):        self.name = name        self.uuid = uuid        self.data = data        self.add_time = add_time if None != add_time else datetime.datetime.now()def create_table():    with engine.connect() as connection:        # 创建表格(如果不存在)        Base.metadata.create_all(engine)# 插入一行数据def add_one():    # 创建会话    uuid_str = str(uuid.uuid4())    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    new_user = TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time)    # 添加到session:    session.add(new_user)    # 提交即保存到数据库:    session.commit()    # 关闭session:    session.close()# 插入多行数据def add_multi():    local_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())    data_list = []    for i in range(10):        uuid_str = str(uuid.uuid4())        data_list.append(TestData(name='zhangsan', uuid=uuid_str, data='{"name": "zhangsan"}', add_time=local_time))    # 添加到session:    session.add_all(data_list)    # 提交即保存到数据库:    session.commit()    # 关闭session:    session.close()# 查询操作def select_data():    # 创建Session    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:    user = session.query(TestData).filter(TestData.id == '1' and TestData.photo_name == 'qwe').one()    print('name:', user.name)    print('data:', user.data)    session.close()  # 关闭Session# 更新操作def update_data():    users = session.query(TestData).filter_by(name="zhangsan").first()  # 查询条件    users.data = '{"name": "lisi"}'  # 更新操作    session.add(users)  # 添加到会话    session.commit()  # 提交即保存到数据库    session.close()  # 关闭会话# 删除操作def delete_one():    delete_data = session.query(TestData).filter(TestData.id == "1").first()    if delete_data:        session.delete(delete_data)        session.commit()    session.close()  # 关闭会话# 删除表def drop_table():    session.execute(text('drop table tb_test_1'))    session.commit()    session.close()def run():    create_table()    # add_one()    add_multi()    # select_data()    # update_data()    # delete_one()    # drop_table()    # select_data1()if __name__ == '__main__':    run()

打包部署

pip install waitress
from app import appif __name__ == "__main__":    from waitress import serve    serve(app, host='0.0.0.0', port=8080, threads=4)

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-08 14:12:42 HTTP/2.0 GET : https://f.mffb.com.cn/a/465323.html
  2. 运行时间 : 0.082089s [ 吞吐率:12.18req/s ] 内存消耗:4,552.70kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=51240c04965232a423c078e4f7027b9a
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000491s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000632s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000305s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000277s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000543s ]
  6. SELECT * FROM `set` [ RunTime:0.000261s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000583s ]
  8. SELECT * FROM `article` WHERE `id` = 465323 LIMIT 1 [ RunTime:0.000529s ]
  9. UPDATE `article` SET `lasttime` = 1770531162 WHERE `id` = 465323 [ RunTime:0.007424s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000262s ]
  11. SELECT * FROM `article` WHERE `id` < 465323 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000426s ]
  12. SELECT * FROM `article` WHERE `id` > 465323 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000448s ]
  13. SELECT * FROM `article` WHERE `id` < 465323 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000806s ]
  14. SELECT * FROM `article` WHERE `id` < 465323 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002365s ]
  15. SELECT * FROM `article` WHERE `id` < 465323 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002286s ]
0.083565s