当前位置:首页>python>《Python 从入门到精通》124|增删改查基础:程序如何操作表数据

《Python 从入门到精通》124|增删改查基础:程序如何操作表数据

  • 2026-08-18 23:11:17
《Python 从入门到精通》124|增删改查基础:程序如何操作表数据

上一章你已经会用 Python 连接 SQLite,也知道了最基础的几个动作:

连接数据库、创建游标、执行 SQL 提交修改、获取结果、关闭连接

这一章开始,才算真正进入数据库最核心、最常用的部分:

增删改查。

几乎所有数据库操作,绕来绕去,最后都离不开这四件事。

新增一条用户 删除一条订单 修改一条成绩 查询某个商品 筛选一批记录 排序、统计、分页,本质上也都建立在查的基础上

所以这一章特别重要。

你可以把它看成数据库阶段真正开始“动起来”的地方。

从这一章开始,数据库不再只是一个抽象概念,也不再只是会建表。 你会开始真正往表里放数据、改数据、删数据、查数据。

这也是程序和数据库开始真正配合工作的第一步。

一、什么叫增删改查

先把这四个字说得特别直白一点。

增,就是新增数据。 比如新增一个用户、新增一篇文章、新增一条留言。

删,就是删除数据。 比如删除一个账号、删除一条评论、删除一笔无效订单。

改,就是修改已有数据。 比如修改年龄、修改手机号、修改订单状态。

查,就是查询数据。 比如查全部用户、查某个 id 的用户、查北京用户、查年龄大于 20 的用户。

这四类操作,在英文里通常对应的是:

Create Read Update Delete

也就是你后面常会看到的 CRUD。

所以 CRUD 不是一个多么神秘的新词。 它只是把程序操作数据最常见的四类动作,压缩成了一个缩写。

二、为什么增删改查这么重要

因为数据库存在的意义,本来就是让程序更方便地管理数据。

而“管理数据”真正落到手上,最后其实就体现在这四种动作里。

如果一个程序只能存,不能查,那数据就像丢进仓库找不回来。 如果只能查,不能改,那数据一旦错了就没法修正。 如果只能改,不能删,垃圾数据会越来越多。 如果只能删,不能增,那系统也根本无法成长。

你会发现,数据库一旦真的开始服务于项目,几乎每个功能都在做 CRUD。

注册用户,是增。 登录时查账号,是查。 用户改资料,是改。 管理员封号或删除留言,是删。

所以这一章不是一个“数据库小练习”。 而是在教你数据库最核心、最基础、最频繁的操作方式。

三、先准备一个真正能练 CRUD 的表

为了让这一章后面的代码都能串起来,我们先准备一张简单但足够真实的表。

比如用户表:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""CREATE TABLE IF NOT EXISTS users (    id INTEGER PRIMARY KEY AUTOINCREMENT,    name TEXT NOT NULL,    age INTEGER,    city TEXT)""")conn.commit()conn.close()

这里有几个地方值得你认真看清。

users 是表名。id 是主键,而且会自动递增。name 不允许为空。age 和 city 是普通字段。

为什么我这次不再用上一章那种最简单的 id INTEGER

因为这一章开始已经更偏实战了。 真实项目里,主键字段通常非常重要。 而 INTEGER PRIMARY KEY AUTOINCREMENT 是 SQLite 里非常常见的一种主键写法。

它意味着:

每新增一条记录,数据库会自动给它分配一个新的 id。

这样你就不用自己手动维护用户编号了。

这会让后面的增删改查顺很多。

四、主键到底是什么,为什么最好尽早认真对待

主键这个概念,你现在必须先建立感觉。

你可以把主键理解成:

一条记录最核心、最稳定、最唯一的身份标识。

比如用户表里:

张三这个名字不唯一。 北京这个城市也不唯一。 年龄更不可能唯一。

但 id 可以唯一。

所以后面你做修改、删除、精确查询时,最稳的方式通常不是按名字找,而是按主键找。

例如:

查 id=3 的用户 修改 id=3 的城市 删除 id=3 这一条记录

为什么这很重要。

因为名字可能重复。 手机号以后也可能允许修改。 但主键通常不会乱变。

所以从数据库思维来说,主键不是某个装饰字段。 它通常是表里最值得你优先重视的字段之一。

五、第一步先学“增”:插入一条数据

新增数据,在 SQL 里通常用 INSERT INTO

最基础的形式大概长这样:

INSERTINTO 表名 (字段1, 字段2, 字段3)VALUES (值1, 值2, 值3)

套到我们这张 users 表里,例如新增一个用户:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""INSERT INTO users (name, age, city)VALUES ('张三', 18, '北京')""")conn.commit()conn.close()

这段代码很值得你停下来消化一下。

INSERT INTO users 表示向 users 表插入数据。 后面括号里的 (name, age, city) 表示你这次要给哪些字段赋值。VALUES (...) 表示具体的值是什么。

注意这里我没有给 id 赋值。 因为前面建表时已经把它设计成自动递增主键了。 这就是主键自动增长的好处之一:

很多时候你不用管它,数据库自己就会处理。

六、为什么插入数据时,不一定非得写所有字段

这是很实用的一点。

比如我们这张表里有 idnameagecity 四个字段。 但你真正插入时,只写了:

(name, age, city)

没有写 id

这没有问题,因为:

id 会自动增长。

同样,如果某些字段允许为空,有时你也不一定要全部都写。

比如:

cursor.execute("""INSERT INTO users (name, city)VALUES ('李四', '上海')""")

这时 age 没写,数据库会按它的规则处理,通常会是 NULL

这说明什么。

说明数据库操作不是“每次都必须把整行写满”。 而是可以根据字段规则和业务需要,按需写入。

这一点后面做真实项目时特别常见。

七、插入多条数据,不能每次都手工复制一遍

这是非常实际的干货。

如果你只是新增一条,写一次 INSERT 当然没问题。 可如果你要插入很多条数据呢。

比如批量写入三个用户:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("INSERT INTO users (name, age, city) VALUES ('张三', 18, '北京')")cursor.execute("INSERT INTO users (name, age, city) VALUES ('李四', 20, '上海')")cursor.execute("INSERT INTO users (name, age, city) VALUES ('王五', 22, '深圳')")conn.commit()conn.close()

这当然能跑,但很笨。

因为真实程序里,数据往往不是你手敲三遍,而是一批一批来的。 比如来自列表、文件、接口返回结果。

所以更像样的做法通常是循环,或者后面进一步用批量执行。

例如先用循环思维理解:

import sqlite3users = [    ("张三"18"北京"),    ("李四"20"上海"),    ("王五"22"深圳")]conn = sqlite3.connect("demo.db")cursor = conn.cursor()for user in users:    name, age, city = user    cursor.execute(f"""    INSERT INTO users (name, age, city)    VALUES ('{name}', {age}, '{city}')    """)conn.commit()conn.close()

注意,这里我只是为了先把“批量插入的感觉”讲清楚,先用了字符串拼接式思维。 下一章会专门讲为什么参数化查询更安全,正式项目里不要这样直接拼 SQL。

你现在先把增的动作真正吃透。

八、第二步学“查”:查询全部数据

查,是数据库里最常见的动作。 而且在很多项目里,查的频率远高于增删改。

最基础的查询语句就是:

SELECT * FROMusers

这里的 * 表示所有字段。

放到 Python 里:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("SELECT * FROM users")rows = cursor.fetchall()print(rows)conn.close()

如果前面插入过几条数据,输出可能会像这样:

[(1'张三'18'北京'), (2'李四'20'上海'), (3'王五'22'深圳')]

这里每个元组就是一条记录。

你会明显感受到:

原来数据库表里的内容,现在真的被 Python 程序取出来了。

这一步非常关键。 因为从这里开始,你就不再只是“把数据放进去”。 你开始能把数据库当作一个真正可读可查的数据源来用了。

九、为什么 SELECT * 虽然方便,但不能老当默认习惯

这是一条很实用的干货。

SELECT * 在学习阶段很好用,因为你能一眼看到整条记录。 但在更正式的代码里,它不是永远最优的习惯。

因为很多时候,你根本不需要所有字段。 比如你只是想看用户名字和城市,那更清楚的写法其实是:

SELECT name, city FROM users

对应 Python:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("SELECT name, city FROM users")rows = cursor.fetchall()print(rows)conn.close()

输出可能是:

[('张三''北京'), ('李四''上海'), ('王五''深圳')]

你会发现,这样更聚焦。

所以现在就先建立一个意识:

学习时可以多用 SELECT *但真正做项目时,最好尽量明确你要哪些字段

这会让代码更清楚,也更符合真实开发习惯。

十、查一条和查多条,不是同一个动作

这点你一定要早点分清。

如果你知道自己只想拿一条结果,比如 id 为 1 的用户,就可以用:

cursor.execute("SELECT * FROM users WHERE id = 1")row = cursor.fetchone()print(row)

这时拿的是单条记录。

而如果你预期是多条,比如查所有北京用户:

cursor.execute("SELECT * FROM users WHERE city = '北京'")rows = cursor.fetchall()print(rows)

这时拿的是多条记录列表。

你可以先这样记:

单条,用 fetchone()多条,用 fetchall()

这个区分很重要。 因为它会直接影响你后面的 Python 处理方式。

一个是元组。 一个是列表套元组。

如果你一开始就没分清,后面写代码特别容易别扭。

十一、查询真正有价值的地方,是加条件

数据库真正强大的地方,不是能“把所有数据都查出来”。 而是能按条件查。

这个条件,通常通过 WHERE 来表达。

比如:

查年龄大于 18 的用户:

cursor.execute("SELECT * FROM users WHERE age > 18")rows = cursor.fetchall()print(rows)

查城市是北京的用户:

cursor.execute("SELECT * FROM users WHERE city = '北京'")rows = cursor.fetchall()print(rows)

查 id 是 2 的用户:

cursor.execute("SELECT * FROM users WHERE id = 2")row = cursor.fetchone()print(row)

你会发现,数据库一旦开始加条件,立刻就比文件搜索、列表遍历更像一套专门的数据管理系统了。

而 WHERE,就是其中最关键的一扇门。

后面你学复杂查询时,这个东西会越来越重要。

十二、排序也是查询里特别高频的需求

例如你想看年龄从大到小的用户列表。 这时就要用 ORDER BY

cursor.execute("SELECT * FROM users ORDER BY age DESC")rows = cursor.fetchall()print(rows)

这里:

ORDER BY age 表示按年龄排序DESC 表示降序,也就是从大到小

如果你想升序,也可以写:

cursor.execute("SELECT * FROM users ORDER BY age ASC")

不过 ASC 本身是默认值,所以很多时候也可以省略。

为什么排序值得早点讲。

因为现实项目里,用户经常不只是“查”。 而是“按某种顺序查”。

最新发布 价格从低到高 分数从高到低 时间从近到远

所以从数据库角度看,排序不是额外功能。 它本来就是查询的一部分。

十三、第三步学“改”:更新已有数据

接下来讲改,也就是更新。

SQL 里通常用 UPDATE

最基础的形式是:

UPDATE 表名SET 字段 = 新值WHERE 条件

比如把 id 为 1 的用户年龄改成 21:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""UPDATE usersSET age = 21WHERE id = 1""")conn.commit()conn.close()

这里最重要的一点是什么。

一定要有 WHERE 条件。

为什么

因为如果你忘了写 WHERE,那就不是改一条,而是可能把整张表都改了。

这在数据库里是特别经典、也特别危险的一类错误。

所以从现在开始,你只要写 UPDATE,脑子里就自动问自己一句:

我到底要改哪一条,条件写了吗

这是一个特别重要的职业习惯。

十四、更新多字段时,可以一次改多个

比如你不只是想改年龄,还想顺手把城市也改了。

可以这样写:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""UPDATE usersSET age = 25, city = '杭州'WHERE id = 2""")conn.commit()conn.close()

这里 SET 后面多个字段之间用逗号隔开。

这也是数据库操作非常实用的一点:

一条更新语句可以同时修改同一条记录里的多个字段。

这样做比你拆成两次操作更自然,也更符合“这是一次更新”的业务语义。

十五、怎么验证更新真的成功了

很多新手写完 UPDATE 就结束了。 但更稳一点的做法是:

改完以后,再查一次。

例如:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""UPDATE usersSET age = 25, city = '杭州'WHERE id = 2""")conn.commit()cursor.execute("SELECT * FROM users WHERE id = 2")row = cursor.fetchone()print(row)conn.close()

这就是很典型的实战习惯。

不要想当然觉得代码没报错就一定改对了。 尤其在数据库操作里,很多错误不是语法报错,而是逻辑改错。

所以:

改完查一下 删完查一下 插完查一下

这个习惯非常值钱。

十六、第四步学“删”:删除一条数据

删除数据在 SQL 里通常用 DELETE FROM

最基础的形式是:

DELETEFROM 表名WHERE 条件

比如删除 id 为 3 的用户:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""DELETE FROM usersWHERE id = 3""")conn.commit()conn.close()

这段代码看起来很简单,但和 UPDATE 一样,有一个必须反复强调的点:

WHERE 非常重要。

如果你忘了写条件,就可能把整张表全删了。

所以数据库里有两类操作,尤其要对 WHERE 高度敏感:

UPDATEDELETE

这是你后面无论做多少项目,都不能松掉的习惯。

十七、删除之后,最好也马上查一下

还是那个原则:

数据库操作,不要只满足于“执行成功”。 最好去确认“结果是不是我想要的”。

例如:

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("DELETE FROM users WHERE id = 3")conn.commit()cursor.execute("SELECT * FROM users")rows = cursor.fetchall()print(rows)conn.close()

这样你就能看到删除之后表里还剩什么。

这个习惯在学习阶段尤其重要。 因为它会帮你建立一种很具体的反馈感:

我这条 SQL,到底对数据库造成了什么影响。

只要这个反馈感建立起来,后面学数据库会稳很多。

十八、把增删改查串成一个完整小流程

到这里,我们把一张表最核心的四类操作其实已经都走过了。

你现在完全可以写一个最小演示,把它们串起来。

import sqlite3conn = sqlite3.connect("demo.db")cursor = conn.cursor()cursor.execute("""CREATE TABLE IF NOT EXISTS users (    id INTEGER PRIMARY KEY AUTOINCREMENT,    name TEXT NOT NULL,    age INTEGER,    city TEXT)""")conn.commit()cursor.execute("INSERT INTO users (name, age, city) VALUES ('张三', 18, '北京')")cursor.execute("INSERT INTO users (name, age, city) VALUES ('李四', 20, '上海')")conn.commit()cursor.execute("SELECT * FROM users")print("全部用户:", cursor.fetchall())cursor.execute("UPDATE users SET age = 21 WHERE name = '张三'")conn.commit()cursor.execute("SELECT * FROM users WHERE name = '张三'")print("修改后张三:", cursor.fetchone())cursor.execute("DELETE FROM users WHERE name = '李四'")conn.commit()cursor.execute("SELECT * FROM users")print("删除后全部用户:", cursor.fetchall())conn.close()

这段代码虽然不长,但它已经非常完整地体现了 CRUD 的基本节奏。

建表 插入 查询 更新 删除 再查询验证结果

这就是数据库最基础、最核心的使用方式。

十九、现在先记住几条特别实用的入门规则

这一部分很干货,你后面会反复用到。

第一,凡是改数据库内容的操作,做完都记得 commit()。 第二,凡是 UPDATE 和 DELETE,都要对 WHERE 特别敏感。 第三,查询前先想清楚:我要一条,还是多条。 第四,验证很重要,插完、改完、删完最好都查一下。 第五,学习阶段别怕多写几步,代码清楚比一开始追求短更重要。

这几条看起来朴素,但对新手来说非常值钱。

因为你现在最大的目标不是写出最花哨的数据库代码。 而是先把每一步都做得清楚、可控、可验证。

二十、这一章最该真正建立的,不是 SQL 记忆,而是“记录级操作”思维

这是我特别想强调的一点。

前面你用文件、列表做数据处理时,很多动作都更像“整体处理”。

比如:

读整份数据 改整份数据 再整份写回去

而数据库开始改变你的一个关键地方就在于:

你开始能自然地按“记录”操作数据了。

新增一条 查一条 改一条 删一条 筛一批 排序一批

这种“以记录为单位”的感觉,就是数据库思维特别核心的一部分。

你一旦开始习惯这种思维,后面做用户系统、订单系统、文章系统、评论系统时,脑子会顺很多。

本章小结

这一章真正让你进入了数据库操作最核心、最常用的部分:增删改查,也就是 CRUD。

在 Python 操作 SQLite 的过程中,最基本的骨架没有变:

先连接数据库 再创建游标 通过 execute() 执行 SQL 改动数据后要 commit()查询数据时通过 fetchone() 或 fetchall() 取结果 最后关闭连接

而在 SQL 层面,你已经开始接触最关键的四类操作:

INSERT INTO 用来新增记录SELECT 用来查询记录UPDATE 用来修改记录DELETE FROM 用来删除记录

更重要的是,你现在应该开始真正建立一种数据库里的“记录级操作”思维:

不是整份数据一起搬来搬去, 而是对表中的某些记录,按条件进行精确处理。

这一步是数据库学习过程中非常关键的分水岭。 一旦这里真正吃透,后面参数化查询、事务、MySQL、数据库设计,都会顺很多。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 14:38:11 HTTP/2.0 GET : https://f.mffb.com.cn/a/506728.html
  2. 运行时间 : 0.226374s [ 吞吐率:4.42req/s ] 内存消耗:4,545.27kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=3f066f6ef12832b93c864c8717cce6dc
  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.001044s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001329s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000705s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001199s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001324s ]
  6. SELECT * FROM `set` [ RunTime:0.000540s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001384s ]
  8. SELECT * FROM `article` WHERE `id` = 506728 LIMIT 1 [ RunTime:0.018019s ]
  9. UPDATE `article` SET `lasttime` = 1787294291 WHERE `id` = 506728 [ RunTime:0.018083s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000697s ]
  11. SELECT * FROM `article` WHERE `id` < 506728 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001741s ]
  12. SELECT * FROM `article` WHERE `id` > 506728 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001050s ]
  13. SELECT * FROM `article` WHERE `id` < 506728 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002107s ]
  14. SELECT * FROM `article` WHERE `id` < 506728 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002374s ]
  15. SELECT * FROM `article` WHERE `id` < 506728 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.008468s ]
0.230156s