当前位置:首页>python>Python 入门第一课:别怕 Data Parsing,它就是给数据“相亲配对”

Python 入门第一课:别怕 Data Parsing,它就是给数据“相亲配对”

  • 2026-07-02 16:45:39
Python 入门第一课:别怕 Data Parsing,它就是给数据“相亲配对”

今天我们来聊一个vibe coding时代药化同学迟早会遇到的东西:
Data Parsing,数据解析。我愿意称之为数据高级定制
听起来很高级,好像一打开就要召唤计算机大神。其实说白了,它就是:
> 把乱七八糟的 Excel 数据,整理成机器能看懂的一张干净大表。
这件事在药物研发里特别常见。比如你手上有三张表:

1. 药物的物理化学性质

2. 药物对细胞系的 IC50

3. 细胞系的 mutation 信息

你想做 Random Forest,预测药物对不同细胞系的效果。
问题是,这些信息一开始不在一张表里。就像实验室里三个人各拿一半真相:
A 同学说:“我知道这个药物的 ALogP。”
B 同学说:“我知道这个药物对 A549 的 IC50。”
C 同学说:“我知道 A549 有哪些 mutation。”
Random Forest 老师坐在那里说:
> “你们能不能先把话说完整?一行里面同时告诉我 cellline、drug name、IC50、mutation、分子描述符,不然我怎么学习?”
所以 Data Parsing 的本质就是:
> 把分散的信息拼成一张完整的科研身份证表。
---

 一、为什么 AI 会写代码,我们还要手搓?

现在流行vibe coding
你告诉 AI 想做什么,AI 帮你写代码。
听起来很美好,像是:
> “AI,帮我把三个 Excel merge 一下,再训练 Random Forest。”
> “好的主人,模型已经训练完成。”
但是现实里常常是:
```pythonKeyError: 'drug_name'```
然后你就开始怀疑人生。
这就像你让学生帮你配 buffer,他说“老师我配好了”,结果 pH 是 14。
AI 写代码很快,但你必须知道它到底在干什么。
尤其是 Python 和 Pandas,刚开始一定要 **手搓**。
不是为了显得很苦,而是为了建立“代码手感”。
什么叫手感?
就是你看到:
```pythonKeyError: 'drug_name'```
你马上知道:
> 哦,不是 Python 坏了,是我的表里没有叫 `drug_name` 的 column。
这种感觉,比背十遍教程有用。
---

## 二、我们的真实问题:column 名字不一致

我们本来想写:
```pythonlearning["drug_name"]```
结果 Python 报错:
```text
KeyError: 'drug_name'
```
为什么?
因为真实的 `learning` 表里 column 是:
```python['cellline''drug''ic50(ln)']```
注意,它叫:
```pythondrug```
不是:
```pythondrug_name```
而另一个药物描述符表 `drug_desc` 里面叫:
```pythonDrug_name```
这就像一个人身份证上叫“张三”,另一个表里叫“老张”。
你让 Python 按“张三”找“老张”,它当然说:
> “找不到,别为难我。”
所以第一步就是统一名字。
---

 三、第一步:导入工具

```python#导入 pandas,用来处理表格数据#可以把 pandas 理解成 Python 版的 Excel,但是更适合自动化和大规模数据处理import pandas as pd#导入 numpy,用来处理数字、矩阵、缺失值等#后面做机器学习时也经常会用到import numpy as np```
如果你还没有安装这些包,在 Mac Terminal 里运行:
```bashpython3 -m pip install pandas numpy openpyxl scikit-learn```
如果你在 Jupyter Notebook 里运行,可以写:
```python!pip install pandas numpy openpyxl scikit-learn```
---

四、第二步:读取三个 Excel

```python#读取药物描述符数据#这个表里通常有 drug_name、ALogP、ALogP2、nAcid 等分子物理化学特征drug_desc = pd.read_excel("2d_str_PADEL_norm_modify_GDSC_final.xlsx")#读取学习数据#这个表里有 cellline、drug、IC50 信息learning = pd.read_excel("learning_data.xlsx")#读取 mutation 数据#这个表里有 mutation 信息,列名通常是不同 cell linemutation = pd.read_excel("match_count2.xlsx")```
读完以后,不要急着 merge。
先看一眼表格长什么样。
```python#查看每个表的大小#shape 会返回:多少行,多少列print("drug_desc:", drug_desc.shape)print("learning:", learning.shape)print("mutation:", mutation.shape)#查看每个表前 5 行print(drug_desc.head())print(learning.head())print(mutation.head())```
这一步像实验前先看标签。
别一上来就加试剂,先确认瓶子里到底是什么。
---

五、第三步:清理 column 名字

Excel 里最讨厌的东西之一是隐藏空格。
比如:
```textDrug nameDrug Namedrug namedrug name```
人眼看差不多,Python 看起来全是不同东西。
所以我们先写一个清洁函数。
```python#定义一个函数,用来清理表格的 column 名字def clean_columns(df):#df.columns 表示这个表的所有列名df.columns = (df.columns.astype(str)#把所有列名转成字符串,避免有些列名是数字或 NaN.str.strip()#去掉列名前后的空格.str.lower()#全部变成小写.str.replace(" ""_")#把空格变成下划线.str.replace("-""_")#把短横线变成下划线.str.replace(".""_", regex=False)#把点号变成下划线)return df```

然后应用到三个表:
```python#清理三个表的 column 名字drug_desc = clean_columns(drug_desc)learning = clean_columns(learning)mutation = clean_columns(mutation)```
检查一下:
```python#打印 learning 表的所有列名print("learning columns:")print(learning.columns.tolist())#打印 drug_desc 表前 10 个列名print("drug_desc columns:")print(drug_desc.columns[:10].tolist())#打印 mutation 表前 10 个列名print("mutation columns:")print(mutation.columns[:10].tolist())```
这一步很重要。
很多初学者一报错就怀疑“是不是我电脑不行”。
其实 80% 的情况只是 column 名字没对上。
---

六、第四步:把 learning 表的列名改成统一格式

我们检查后发现:
```pythonlearning.columns.tolist()```
结果是:
```python['cellline''drug''ic50(ln)']```
但是后面我们希望统一使用:
```pythoncelllinedrug_nameic50```
所以要改名。
```pythonrename learning columns#把 learning 表里的 drug 改成 drug_name#把 ic50(ln) 改成 ic50#这样后面 merge 和建模更方便learning = learning.rename(columns={"drug""drug_name","ic50(ln)""ic50"})```#检查一下:```pythonprint(learning.columns.tolist())```
希望看到:
```python['cellline''drug_name''ic50']```
如果看到了,说明这一关过了。
---

七、第五步:清理关键列里的文字

column 名字清理完了,还要清理内容。
比如药名可能是:
```textGefitinib Gefitinibgefitinib```
这些对人来说一样,对 Python 来说可能不一样。
所以我们要处理 `drug_name` 和 `cellline`。
```pythonclean key values#把 drug_name 转成字符串,然后去掉前后空格learning["drug_name"] = learning["drug_name"].astype(str).str.strip()#把 cellline 转成字符串,然后去掉前后空格learning["cellline"] = learning["cellline"].astype(str).str.strip()#drug_desc 表里的 drug_name 也要做同样处理drug_desc["drug_name"] = drug_desc["drug_name"].astype(str).str.strip()```
为什么这一步重要?
因为 merge 就像相亲。
两边名字必须对得上。
```textGefitinib```
```text Gefitinib```
在 Python 眼里不是同一个人。
一个多余空格,就能拆散一段美好姻缘。
---

八、第六步:第一次 merge,给 IC50 配上药物性质

现在我们有:

learning 表

```textcellline | drug_name | ic50```

drug_desc 表

```textdrug_name | nacid | alogp | alogp2 | ...```
我们要按照 `drug_name` 合并。
```pythonfirst merge#以 learning 为主表#根据 drug_name 去 drug_desc 里找对应的分子描述符merge1 = pd.merge(learning,#左边主表,保留所有 learning 里的行drug_desc,#右边表,提供药物 descriptoron="drug_name",#按 drug_name 这一列进行匹配how="left"#左连接,learning 里的数据全部保留)```
这里 `how="left"` 很关键。
它的意思是:
> learning 表里的每一条 IC50 数据都保留,然后去 drug_desc 表里找药物特征。
如果找到了,就补上。
如果找不到,就变成 `NaN`。
就像你拿着学生名单去找成绩单。
学生名单上的人不能丢,找不到成绩就先空着。
---

九、第七步:检查第一次 merge 是否成功

```python打印三个表的大小print("learning:", learning.shape)print("drug_desc:", drug_desc.shape)print("merge1:", merge1.shape)```
然后看关键几列:
```python查看 merge 后的结果如果能看到 nacid、alogp、alogp2,说明药物 descriptor 已经成功加进来了print(merge1[["cellline""drug_name""ic50""nacid""alogp""alogp2"]].head())```
如果输出类似:
```textcellline drug_name ic50 nacid alogp alogp2A549 Gefitinib 1.23 0 3.1 9.61H1975 Erlotinib 0.89 0 2.8 7.84```
恭喜,第一段路走通了。
这时候你的数据已经从:
```text这个药物对这个细胞的 IC50```
升级成:
```text这个药物对这个细胞的 IC50,同时这个药物有哪些物理化学性质```
Random Forest 已经开始微笑了。
---

十、完整代码,适合初学者复制运行

# =========================# Step 1. Import libraries# =========================# pandas 用来处理表格import pandas as pd# numpy 用来处理数字和矩阵import numpy as np# =========================# Step 2. Read Excel files# =========================# 药物物理化学描述符表drug_desc = pd.read_excel("2d_str_PADEL_norm_modify_GDSC_final.xlsx")# IC50 学习数据learning = pd.read_excel("learning_data.xlsx")# mutation 数据mutation = pd.read_excel("match_count2.xlsx")# =========================# Step 3. Clean column names# =========================def clean_columns(df):    """    这个函数用来清理 column 名字。    目的:    1. 去掉前后空格    2. 全部变小写    3. 把空格、横线、点号换成下划线    这样可以减少 KeyError。    """    df.columns = (        df.columns        .astype(str)        .str.strip()        .str.lower()        .str.replace(" ""_")        .str.replace("-""_")        .str.replace(".""_", regex=False)    )    return df# 对三个表都进行 column 清理drug_desc = clean_columns(drug_desc)learning = clean_columns(learning)mutation = clean_columns(mutation)# =========================# Step 4. Check real columns# =========================# 打印真实列名# 初学者一定要养成这个习惯print("learning columns:")print(learning.columns.tolist())print("drug_desc first 10 columns:")print(drug_desc.columns[:10].tolist())print("mutation first 10 columns:")print(mutation.columns[:10].tolist())# =========================# Step 5. Rename learning columns# =========================# 你的 learning 表真实列名是:# cellline, drug, ic50(ln)# 但是为了后面统一处理,我们改成:# cellline, drug_name, ic50learning = learning.rename(columns={    "drug""drug_name",    "ic50(ln)""ic50"})# 再检查一次,确认改名成功print("learning columns after rename:")print(learning.columns.tolist())# =========================# Step 6. Clean key values# =========================# 清理 drug_name 里的空格learning["drug_name"] = learning["drug_name"].astype(str).str.strip()# 清理 cellline 里的空格learning["cellline"] = learning["cellline"].astype(str).str.strip()# 清理 drug_desc 表里的 drug_namedrug_desc["drug_name"] = drug_desc["drug_name"].astype(str).str.strip()# =========================# Step 7. First merge# =========================# 把 learning 和 drug_desc 按 drug_name 合并# learning 提供 cellline、drug_name、ic50# drug_desc 提供 nacid、alogp、alogp2 等药物描述符merge1 = pd.merge(    learning,    drug_desc,    on="drug_name",    how="left")# =========================# Step 8. Check merge result# =========================print("learning:", learning.shape)print("drug_desc:", drug_desc.shape)print("merge1:", merge1.shape)# 查看前几行,确认 descriptor 已经合并进来print(    merge1[        ["cellline""drug_name""ic50""nacid""alogp""alogp2"]    ].head())

---

## 十一、这段代码背后的药化意义

这一段不是单纯学 Python。
它其实是在做药物研发里的一个核心动作:
```text药物结构信息 + 细胞背景信息 + 活性数据```
先拼起来,才有可能让机器学习模型找规律。
比如 Random Forest 后面可能会学到:
```text高 ALogP 的药物,在某些 mutation 背景下 IC50 更低```
或者:
```text某类 PubChem fingerprint 特征和某些细胞系敏感性有关```
再往后,你就可以做:
```textfeature importancedrug response predictioncell line sensitivity analysismutation based drug response model```
听起来就像 AI 药物研发了。
但地基还是这一句:
```pythonpd.merge(...)```
别小看它。
很多 AI 项目不是死在模型上,而是死在数据没拼对。
---

十二、给 0 基础学生的一句话

刚开始学 Python,不要怕报错。
`KeyError` 不是骂你。
它只是在说:
> “老师,这个 column 名字我真没找到。”
你要做的不是紧张,而是运行:
```pythonprint(df.columns.tolist())```
看一眼真实列名。
这就是手搓代码的价值。
AI 可以帮你写,但你要知道哪里可能错。
就像药化里 AI 可以帮你生成分子,但你还是要知道这个结构能不能合成,会不会太油,会不会像一块会走路的凡士林。
Vibe coding 很好,但基础手感不能丢。
代码不是魔法,代码更像实验。
每一步都要看结果,每一步都要确认。
今天你学会的其实不只是 `rename` 和 `merge`,而是一个科研数据处理的基本姿势:
> 先看清数据,再统一名字,再清理内容,最后合并。
这就是 Data Parsing 的第一课。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-03 13:28:36 HTTP/2.0 GET : https://f.mffb.com.cn/a/494636.html
  2. 运行时间 : 0.202303s [ 吞吐率:4.94req/s ] 内存消耗:4,663.13kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a0d7a988fda60befb70efaa614e5884d
  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.000564s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000638s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000294s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001488s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000498s ]
  6. SELECT * FROM `set` [ RunTime:0.007138s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000741s ]
  8. SELECT * FROM `article` WHERE `id` = 494636 LIMIT 1 [ RunTime:0.017668s ]
  9. UPDATE `article` SET `lasttime` = 1783056516 WHERE `id` = 494636 [ RunTime:0.026930s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000370s ]
  11. SELECT * FROM `article` WHERE `id` < 494636 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001789s ]
  12. SELECT * FROM `article` WHERE `id` > 494636 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000411s ]
  13. SELECT * FROM `article` WHERE `id` < 494636 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.029452s ]
  14. SELECT * FROM `article` WHERE `id` < 494636 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.026931s ]
  15. SELECT * FROM `article` WHERE `id` < 494636 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.013887s ]
0.203957s