Pandas接数据库全攻略:read_sql、连接串与大表分块实践
Pandas接数据库这件事说简单也简单说麻烦也麻烦。简单在于一个read_sql函数就能把表拉成DataFrame麻烦在于连接串、驱动、数据类型、大表单次拉取内存爆掉……这些坑我全踩过。这篇文章就把我实际项目中反复用到的套路和教训整理出来按照从零到能跑通、再到大表不卡死的顺序讲尽量把每一步的“为什么”也说清楚。1. 先把核心函数搞明白read_sql这条主线到底怎么用很多人一上来就折腾pd.read_sql_table、pd.read_sql_query、pd.read_sql三个函数结果越搞越晕。我先说结论日常开发你只需要记住pd.read_sql这一个入口它是另外两个的封装会自动根据你传入的参数是SQL语句还是表名来决定走哪条路。用起来就两行代码import pandas as pd from sqlalchemy import create_engine engine create_engine(mysqlpymysql://user:passwordhost:3306/dbname?charsetutf8mb4) df pd.read_sql(SELECT * FROM orders WHERE create_date 2025-01-01, engine)第一行是创建数据库引擎第二行把SQL执行结果直接变成DataFrame。整个过程里Pandas负责把结果集的元数据和行数据组装成表格数据库驱动负责和数据库通信SQLAlchemy负责管理连接和SQL方言转换。这里有三点值得展开说。1.1read_sql_query、read_sql_table和read_sql的分工如果你手动指定函数逻辑是这样的pd.read_sql_query(sql, engine)只能传SQL字符串适合复杂查询比如多表JOIN、GROUP BY、子查询。pd.read_sql_table(table_name, engine)只能传表名Pandas会生成SELECT * FROM 表名不需要你写SQL。pd.read_sql(sql_or_table, engine)内部判断传的是SELECT开头的字符串就走query逻辑否则尝试当表名处理。实际项目中绝大多数情况都应该用pd.read_sql加完整SQL因为业务数据很少是单表全量用read_sql_table反而限制太多。而且显式写SQL还能控制列名、在哪一层过滤、是否加锁排查问题时一眼就能看明白。1.2 底层到底发生了什么read_sql拿到SQL之后会交给SQLAlchemy的engine.execute()执行数据库驱动返回游标cursorPandas再通过cursor.fetchall()把全部结果拉到内存里最后根据游标的description拿列名、根据每一行的值推断dtype并构建DataFrame。这也解释了一个非常关键的问题为什么read_sql结果集很大的时候内存会炸——因为Pandas默认把所有行一次性取回内存再一次性建表。数据量一旦超过内存容量程序直接卡死或者被系统杀掉。后面我会专门讲分块方案。1.3 连接和游标的生命周期不写with语句直接传engine连接用完后SQLAlchemy会回收但如果你在循环里反复调用read_sql连接数可能瞬间打满数据库的max_connections。我的习惯是每次都显式用with engine.connect() as conn:把连接生命周期控制在自己手里也让代码更容易加日志和异常处理。with engine.connect() as conn: df pd.read_sql(SELECT * FROM users WHERE status 1, conn)这种做法在后续调试、配合事务、复用连接时都更舒服。2. 连接外部数据库这件事注意点全藏在连接串里连接串是新手最容易翻车的地方。格式稍微不对一个上午就没了。我见过最夸张的情况是同一个MySQL库在本地连得上部署到服务器上就报Access denied最后发现是连接串里的host写成了内网IP而服务器根本不在那个内网。连接串其实是一段URL通用格式是dialectdriver://username:passwordhost:port/database?charsetxxx其中dialect是数据库类型driver是Python驱动库。下面是常见数据库的连接串写法我整理成了一张表可以直接对着抄数据库连接串示例MySQLmysqlpymysql://root:123456127.0.0.1:3306/test_db?charsetutf8mb4PostgreSQLpostgresqlpsycopg2://postgres:123456127.0.0.1:5432/test_dbSQL Servermssqlpymssql://sa:123456127.0.0.1:1433/test_dbOracleoraclecx_oracle://scott:tiger127.0.0.1:1521/?service_nameorclSQLitesqlite:///./data.db或sqlite:////absolute/path/data.dbClickHouseclickhousenative://default:123456127.0.0.1:9000/default每个坑我都遇到过列几个最常见的。2.1 密码里面有特殊字符必须做URL编码比如密码是Abc123!直接拼进连接串会报错因为、:、/这些字符在URL里有特殊含义。处理办法是用urllib.parse.quote_plus编码from urllib.parse import quote_plus password quote_plus(Abc123!) engine create_engine(fmysqlpymysql://root:{password}127.0.0.1:3306/test_db)这行代码几乎百发百中地解决“密码明明对但连不上”的诡异问题。2.2 驱动没装报错才有人想起来很多同学记得装pandas却忘了装驱动。比如MySQL的pymysqlPostgreSQL的psycopg2SQL Server的pymssql。缺失驱动时的报错一般是ModuleNotFoundError: No module named pymysql或者sqlalchemy.exc.NoSuchModuleError。装驱动用pip就行pip install pymysql pip install psycopg2-binary pip install pymssql如果你想少装一堆驱动也可以统一用ODBC方案比如PyODBC但配置系统DSN又得折腾一遍。我的建议是能用纯Python驱动就用纯Python驱动部署时最省心。2.3 连接串里的charset一定要显式指定MySQL连接串里加charsetutf8mb4你查出来的中文才不会乱码写入的时候emoji也能存。以前用默认utf8时遇到一个用户昵称带特殊字符数据库写入直接报错排查了半天才发现是字符集问题。从那以后我所有MySQL连接串都会带上charsetutf8mb4。PostgreSQL则一般不用指定默认UTF8就够用。2.4 千万不要把账号密码硬编码在代码里从安全角度考虑硬编码账号密码的问题不只是泄露风险还在于换密码时必须改代码、重新部署。我现在的习惯是放在环境变量或者配置文件里配合.env读取import os from sqlalchemy import create_engine engine create_engine(os.environ[DATABASE_URL])这样同一个代码本地、测试环境、生产环境只需要配不同的环境变量代码一个字不用改。3. 为什么我推荐用SQLAlchemy而不是直接传数据库驱动标题里Pandas接数据库很多人会问直接用pymysql连接然后传给read_sql行不行行是行但我不推荐。原因有三层。3.1 SQLAlchemy帮你说人话SQLAlchemy是一个数据库工具包它会把你的标准SQL翻译成目标数据库的方言。你在MySQL上写的LIMIT 10到了SQL Server会自动变成SELECT TOP 10你在PostgreSQL里写的ILIKE到了其他库会有对应处理。虽然我们多数场景只在一种数据库上跑但万一以后要换库SQLAlchemy能省掉大面积SQL改造。3.2 连接池是白捡的buff直接传pymysql连接Pandas用完就close频繁创建销毁连接在并发场景下特别浪费。SQLAlchemy的create_engine默认维护一个连接池连接可以复用还能设置池大小、回收时间engine create_engine( mysqlpymysql://user:passhost/db, pool_size5, # 池中保留的连接数 max_overflow10, # 最多额外创建的连接数 pool_recycle3600, # 连接1小时后回收防止数据库超时断开 echoFalse # True会打印所有SQL调试用 )echoTrue是个调试利器能看到SQLAlchemy实际执行的每条SQL语句排查问题时特别管用。发布前记得关掉不然日志会爆炸。3.3 安全传参写法的标配直接在SQL里拼接字符串遇到用户输入就有SQL注入风险。SQLAlchemy的text()配合绑定参数才是正解from sqlalchemy import text sql text(SELECT * FROM orders WHERE user_id :uid AND status :st) df pd.read_sql(sql, engine, params{uid: 1024, st: PAID})这样写不仅安全可读性也高。你甚至可以把params塞给read_sqlPandas会原样透传给SQLAlchemy执行。4. 大表导入的真正解法分块读取和服务端游标前面说过read_sql默认一次性把全部数据拉进内存。表几百万行、几十个字段的时候内存瞬间飙到几个G开发机直接卡死。我处理过一个千万级订单表单表DataFrame光构造就花了快10分钟最后物理内存爆掉Python进程被系统kill。用三种办法可以解决。4.1chunksize参数最简单但有个坑pd.read_sql原生支持chunksize参数用法是chunks pd.read_sql(SELECT * FROM big_table, engine, chunksize100000) for chunk in chunks: process(chunk)每轮循环拿到一个100000行的DataFrame处理完再取下一批内存占用被控制在单批范围内。但有个坑**这种实现本质上是不断调用游标的fetchmany底层连接的状态、事务范围都和你以为的不太一样。**如果表在被读取的同时有写入你可能会看到不一致的快照。多数场景无所谓但严格要求一致性时最好在SQL层面加FOR UPDATE或使用事务快照。4.2 用SQL做分页拉取更可控如果要精确控制每次拉取的偏移量可以用SQL分页page_size 50000 offset 0 while True: df pd.read_sql(fSELECT * FROM big_table ORDER BY id LIMIT {page_size} OFFSET {offset}, engine) if df.empty: break process(df) offset page_size这种方式的好处是即使程序中途挂了下次可以从某个offset继续。缺点是OFFSET越大数据库排序成本越高越到后面越慢。4.3 服务端游标MySQL下的大表利器如果数据量真到千万、亿级用pymysql默认行为拉数据仍然会先把全部结果发到客户端。MySQL的SSCursor服务端游标可以让游标在数据库端保持打开客户端每次只取一批from sqlalchemy import create_engine, text engine create_engine(mysqlpymysql://user:passhost/db) with engine.connect() as conn: result conn.execution_options(yield_per5000).execute(text(SELECT * FROM huge_table)) for partition in result.partitions(): df pd.DataFrame(partition, columnsresult.keys())这里的yield_per5000表示每5000行为一个块返回。说实话第一次跑通这个方案时我只觉得“原来数据库可以这么拉数据”后来在千万行级表上实测内存占用稳定在几百MB才彻底服了。4.4 三种方案的选型对照方案适用数据量优点缺点默认一次性拉取十万行以下代码最简单大表内存爆炸chunksize百万行级API原生支持代码改动小连接状态不够透明SQL分页百万到千万行可续传可控制粒度深分页变慢服务端游标千万行以上内存最省性能最稳代码相对复杂小项目别上来就用服务端游标复杂度和收益不成正比。数据量真的大的时候直接一步到位。5. 类型转换和数据处理这些坑官方文档不会写数据库里的类型和Pandas的dtype不是一一对应最常见的就是数据库的DECIMAL读出来是object或float64。这不是Pandas错了而是驱动返回的值是Decimal对象Pandas在类型推断时拿不准。5.1 日期时间类型最容易出错MySQL的DATETIME、TIMESTAMP读出来一般是datetime64[ns]PostgreSQL的timestamp with time zone读出来带时区信息如果直接和本地的datetime比较会报TypeError。我的标准处理套路是读完之后统一转成目标时区再操作df[create_time] pd.to_datetime(df[create_time], errorscoerce) df[create_time] df[create_time].dt.tz_localize(None) # 去掉时区便于比较其中errorscoerce很关键一旦出现脏数据这一列会被置为NaT而不是整个程序崩掉。5.2 抽样看dtype而不是信文档接一个新库的时候我强烈建议先抽样一小批数据打印dtypedf_sample pd.read_sql(SELECT * FROM table_name LIMIT 100, engine) print(df_sample.dtypes)因为真实环境的表结构往往和开发环境不一致某个字段可能是NULL、可能是空字符串、可能是None抽样能提前发现类型推断的奇葩结果省得后面写一堆转换代码再返工。5.3 主键和索引列别被当成普通数据有些表的主键是BIGINT UNSIGNED超过Pandas默认的int64上限时读出来会变成object。如果你想保留大整数精度可以先转成字符串df[id] df[id].astype(str)不然你在Python里做运算时精度悄悄丢了都不知道。5.4 布尔值、枚举值、JSON字段的预处理MySQL的TINYINT(1)读出来可能是int64需要你自己转bool。JSON字段在MySQL 5.7以上读到的是字符串到了Pandas里是object后续一般要用json.loads处理成字典再pd.json_normalize展开。这些都在读完之后用Pandas处理即可但记住一点能用数据库做类型转换的就不要在Pandas里转换数据库的CAST通常更高效。6. SQL别写成一坨查询性能从写SQL那一步就要注意Pandas接数据库很多人只关注Pandas侧的内存优化忽略了SQL本身写得烂数据还没到Pandas就已经慢得离谱了。有几个原则是我在项目里反复用的。6.1 别SELECT *只选你要的列我以前也喜欢SELECT *图省事。直到有一次一个表有80多列其中还有好几个TEXT类型的大字段查询返回了1个G的数据Pandas光解析就卡了半天。后来改成只选需要的字段耗时直接降到原来的十分之一。列少了网络传输少内存占用少Pandas类型推断也快。6.2 能过滤就下推到SQL别在Pandas里filterPandas的df[df[status] PAID]很好用但如果原始表有几个亿行你要的数据只有10万行正确的做法是sql SELECT id, user_id, amount FROM orders WHERE status PAID AND create_date 2025-01-01 df pd.read_sql(sql, engine)这样数据库通过索引只返回目标行Pandas拿到的已经是最小数据集。过滤尽量下推到SQL层计算量在数据库侧完成不要浪费在网络传输和Pandas内存上。6.3 聚合也先想数据库同样的道理GROUP BY能在SQL里做就别拉出来再groupby。数据库有索引、有并行、有优化器多数情况下比你在Pandas里面对全表做groupby要快得多。6.4 给查询加超时免得挂死有些SQL坏查询会把数据库连接拖到超时。SQLAlchemy可以在连接串或engine层面设置超时engine create_engine( mysqlpymysql://user:passhost/db?connect_timeout10read_timeout60write_timeout60 )这样即使SQL写得烂至少不会无限期卡住。生产环境中这个配置几乎必备。6.5 WHERE条件的参数化动态查询时千万别拼字符串sql SELECT * FROM users WHERE name user_input 这属于祖传代码级别的错误。正确写法上面说过用text()和:param绑定参数。不仅防注入数据库还可以复用执行计划速度更快。7. 反向操作说不定你也要把DataFrame写回去标题虽然说的是导入数据库但实际项目里数据从数据库读出来处理完再写回去的情况也很常见。这里简要提几个点免得你读完之后想写回时又一头扎进新坑。7.1to_sql的最简用法df.to_sql(new_table, engine, if_existsreplace, indexFalse, chunksize10000)if_existsreplace先DROP原表再新建危险操作生产慎用。if_existsappend往已有表追加日常推荐。indexFalse不把DataFrame索引写入表。chunksize10000分批写入避免单条逐行插入太慢。7.2 写回前先对齐数据库类型to_sql会根据DataFrame的dtype推断数据库列类型推断不准往往导致写入失败。手动指定类型可以这样from sqlalchemy.types import Integer, String, DateTime df.to_sql( new_table, engine, if_existsappend, indexFalse, dtype{ id: Integer, name: String(64), create_time: DateTime, } )我遇到过的典型错误是Pandas把全数字但长度超过20的列推断为BIGINT数据库那边却是VARCHAR写入时直接报DataError。所以写表之前一定要看目标表结构。7.3 大DataFrame写回的两种策略如果数据量大先建表、再分批插入。另一种是我更常用的策略先df.to_sql建好空表再用INSERT INTO ... ON DUPLICATE KEY UPDATE做增量更新。批量插入用executemany比逐行快得多to_sql的chunksize参数本质就是这个原理。7.4 写回时的数据清洗写回之前NaN要决定是变NULL还是填默认值。Pandas的NaN在to_sql里默认写NULL如果你的表字段是非空约束写入必然报错。建议提前df[required_field] df[required_field].fillna()另外日期列必须是datetime64类型字符串列必须去掉超长文本否则数据库端会截断或报错。8. 一整套实战代码从连接到分块拉取的全流程模板说了这么多我把自己的标准模板贴出来平时接新库或者给同事做演示基本直接抄这份。逻辑是读取配置、创建引擎、测试连接、分块拉取、类型清洗、关闭连接。import os import pandas as pd from sqlalchemy import create_engine, text # 1. 从环境变量读取配置千万别硬编码 db_url os.environ[DATABASE_URL] # 2. 创建引擎配置连接池 engine create_engine( db_url, pool_size5, max_overflow10, pool_recycle3600, pool_pre_pingTrue, # 取连接前先探测防止拿到死连接 ) # 3. 测试连接 with engine.connect() as conn: conn.execute(text(SELECT 1)) # 4. 分块拉取数据 chunks pd.read_sql( text(SELECT id, user_id, amount, create_time FROM orders WHERE status :st), engine, params{st: PAID}, chunksize50000, ) frames [] for chunk in chunks: # 这里做类型清洗 chunk[create_time] pd.to_datetime(chunk[create_time], errorscoerce) chunks.append(chunk) # 5. 合并注意chunks是迭代器这里重构了frames再concat df pd.concat(frames, ignore_indexTrue) engine.dispose()有几个细节提醒一下pool_pre_pingTrue这个参数值得开它在每次从连接池取连接时先发一个SELECT 1避免数据库重启后你还拿着旧的死连接。chunksize拉取的迭代器只能遍历一次如果你既要统计行数又要处理数据最好边拉边聚合或者先合并再处理别指望回头再遍历一遍。最后engine.dispose()不是必须的进程结束自然会回收但长任务或定时任务里养成这个习惯能避免连接蹭蹭涨。9. 我实际踩过的坑列成一个速查清单最后把我这几年用Pandas接数据库踩过的坑整理成一张速查表。你遇到问题的时候能少走弯路。现象大概率原因解决方案Access denied for userhost写错或密码含特殊字符未编码用quote_plus编码密码核对hostModuleNotFoundError驱动没装安装对应驱动包pymysql/psycopg2等中文乱码连接串没指定charsetMySQL加charsetutf8mb4内存爆掉一次性拉取大数据集用chunksize、SQL分页或服务端游标Decimal转成object驱动返回Decimal对象df[col] df[col].astype(float)或保留Decimal日期比较报错时区信息不一致统一tz_localize(None)去掉时区DataError: Out of range数值超类型范围按目标表结构指定dtype或转字符串SQL注入风险拼接字符串使用text()和绑定参数连接数耗尽频繁创建engine或连接用连接池和with语句死连接数据库重启但连接池未感知开启pool_pre_pingTrue这表是我自己踩坑经验的浓缩每次排查问题我都会重新看一遍。多数的“灵异问题”最后都能在连接串和数据类型这两类里找到根因。10. 再聊几句我的体会Pandas连数据库这件事本质上不是Pandas的问题而是数据库通信 内存管理 类型系统对齐三件事的合体。你只要把连接串搞对、数据量级搞清楚、类型转换写规范剩下的就是熟练活。我个人最推荐的进路是先用read_sql把单表跑通再往项目里加SQLAlchemy连接池数据量大了再上分块和服务端游标。不要一开始就追求终极方案很多项目的数据量连一行SELECT *都撑得住完全没必要把代码复杂度拉满。另外每次接到一个陌生数据库我都习惯先跑一遍抽样表结构和数据用df.info()看dtype确认没有意外再写正式逻辑。这十分钟的侦查工作帮我省掉过无数次返工。最后那句老话**能用SQL在数据库侧做完的事情就不要留到Pandas里做。**数据早点变小后面的所有环节都舒服。

相关新闻

在线演示工具选型指南:按场景匹配协作、设计与演示需求

在线演示工具选型指南:按场景匹配协作、设计与演示需求

直接切入正题。这些年我给团队和自己挑过不少在线PPT工具,也帮朋友处理过各种演示方案。一个很深的感受是:大多数人不是缺工具,而是不知道按什么标准选工具。网上到处是“十大在线PPT工具推荐”之类的榜单,看着热闹,真…

2026/10/13 4:29:06 阅读更多 →
Windows下VS2019编译Boost库:b2参数配置与链接避坑指南

Windows下VS2019编译Boost库:b2参数配置与链接避坑指南

1. 为什么我会写下这篇Windows VS2019编译Boost库学习记录Boost 库在 C 生态里的地位,不太需要我多解释。跨平台项目、网络库、文件系统操作、智能指针、正则替换、序列化、几何计算,到处都能看到它的身影。但很多刚从 Linux 转到 Windows 上做开发的同事…

2026/10/13 4:29:06 阅读更多 →
CC Switch 使用指南:告别手改 Claude Code 配置

CC Switch 使用指南:告别手改 Claude Code 配置

说起来有点惭愧,我在手改 Claude Code 配置这件事上栽过好几次跟头,才老老实实把 CC Switch 用起来。如果你也正在折腾自定义模型接入,大概率能在我踩过的坑里看到自己的影子。这篇文章不写虚的,直接讲清楚 CC Switch 到底解决了什…

2026/10/13 4:29:06 阅读更多 →

最新新闻

反编译避坑指南:伪代码可信度判断与类型重建实战技巧

反编译避坑指南:伪代码可信度判断与类型重建实战技巧

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:16:28 阅读更多 →
AI落地新浪潮:岗位重构与ds4本地推理实战指南

AI落地新浪潮:岗位重构与ds4本地推理实战指南

2026年10月4日那天的信息流,打开之后和往常不太一样。平时刷到的要么是模型榜单刷新,要么是某个框架发了新版,可这天前后三条全在讲"人的事"和"落地的事":先是某家AI公司的CEO公开说未来五年一半初级岗位会消…

2026/10/13 5:16:28 阅读更多 →
两变量关联性分析:从假设检验到相关系数选择与实操

两变量关联性分析:从假设检验到相关系数选择与实操

1. 两变量关联性分析到底在解决什么问题很多人做数据分析时,第一步会看分布、算均值,第二步就卡住了——手头有两个变量,想知道它们之间到底有没有关系,关系有多强,能不能用一个去预测另一个。这就是两变量关联性分析要…

2026/10/13 5:16:28 阅读更多 →
大模型训练全流程解析:从数据准备到部署排障的工程实践

大模型训练全流程解析:从数据准备到部署排障的工程实践

前阵子有个做AI应用的朋友跑来问我:网上把大模型训练说得神乎其神,到底一个模型是怎么炼成的?他刷过不少零碎教程,知道预训练、微调、RLHF这些词,但始终串不进一条完整链路。这个问题我回答过很多次,今天干…

2026/10/13 5:16:28 阅读更多 →
Robomaster硬件基础讲义:从电源树到CAN通信的工程实践

Robomaster硬件基础讲义:从电源树到CAN通信的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:16:28 阅读更多 →
密码破解原理与防御:从暴力枚举到多因素认证的完整指南

密码破解原理与防御:从暴力枚举到多因素认证的完整指南

做安全这一行,最常被朋友问的一句话就是:"你能不能帮我破解某个密码?"还有另一个版本:"网上那些破解密码的工具到底有没有用?"每次我都得先泼一盆冷水:真正搞安全的,研究破…

2026/10/13 5:15:27 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →