Python连接达梦数据库实战指南:从驱动安装到框架集成
1. 从“为什么”开始Python与达梦数据库的连接场景最近在几个企业级数据中台和国产化替代的项目里频繁遇到一个需求用Python去对接达梦数据库DM8。这其实是一个挺典型的场景尤其是在当前强调技术自主可控的大背景下很多传统使用Oracle、MySQL的系统正在逐步迁移或并行接入像达梦这样的国产数据库。Python作为数据分析、自动化脚本和快速应用开发的首选语言自然就成了连接这些数据库的桥梁。但说实话第一次上手时我也踩了不少坑。官方文档虽然齐全但更像一本字典缺少针对Python开发者“开箱即用”的指引。比如驱动选哪个dmPython和pymysql用法一样吗连接字符串里那一堆参数到底怎么配中文编码问题怎么冒出来的这些问题文档不会直接告诉你得自己摸索。所以这篇内容不是简单的API罗列而是把我从环境准备、驱动安装、连接测试到实际开发中遇到的编码、事务、性能问题这一整套流程结合具体代码和排查思路完整地梳理出来。无论你是刚开始接触达梦还是正在将旧有Python数据服务迁移到达梦平台希望这些经验能帮你少走弯路。2. 环境准备与驱动选型避开第一个大坑动手写代码之前环境是地基。这一步没做好后面全是空中楼阁。达梦为Python提供了官方的dmPython驱动模块这是最推荐、兼容性最好的方式。别想着用通用的ODBC或者像sqlalchemy的某些方言去绕初期可能能连上但遇到复杂数据类型、存储过程调用或者特定优化时坑多到你怀疑人生。2.1 达梦数据库客户端安装dmPython驱动并非一个纯Python的包它底层依赖于达梦数据库的客户端库libdmdpi.soon Linux,dmdpi.dllon Windows。因此第一步不是在pip install而是确保你的操作系统中已经正确安装了达梦数据库的客户端软件。获取安装包从达梦官网下载对应你操作系统Windows/Linux/AIX等和位数x86/x64的“客户端”安装包注意不是完整的数据库服务器安装包。执行安装以Linux为例通常是一个.iso或.bin文件。挂载或直接运行安装程序按照提示进行。安装过程中关键是要记住DM_HOME安装目录的路径比如/opt/dmdbms。配置环境变量这是至关重要的一步目的是让系统能找到客户端库。Linux/Mac在~/.bashrc或~/.bash_profile中添加export DM_HOME/opt/dmdbms export LD_LIBRARY_PATH$DM_HOME/bin:$LD_LIBRARY_PATH export PATH$DM_HOME/bin:$PATH然后执行source ~/.bashrc使生效。Windows在“系统属性”-“高级”-“环境变量”中添加系统变量DM_HOME值为你的安装目录例如C:\dmdbms。然后在Path变量中添加%DM_HOME%\bin。注意很多连接失败的错误比如ImportError: libdmdpi.so: cannot open shared object file根源就是LD_LIBRARY_PATH或Path没有正确设置。安装完客户端后务必在终端里执行echo $LD_LIBRARY_PATH或echo %PATH%确认路径已包含达梦的bin目录。2.2 安装 dmPython 驱动确保客户端环境变量生效后再安装Python驱动。dmPython可以通过pip从官方源安装但更推荐从达梦安装目录中获取版本匹配度最高。方式一推荐版本最匹配在达梦安装目录的drivers/python子目录下找到dmPython-xxx.whl文件。然后使用pip进行本地安装pip install /opt/dmdbms/drivers/python/dmPython-2.3-xxx.whl方式二使用pip官方源pip install dmPython这种方式安装的是PyPI上最新的版本可能与你的数据库服务器版本存在细微兼容性差异对于生产环境建议优先使用方式一。安装成功后可以在Python交互环境中验证import dmPython print(dmPython.__version__)如果没有报错并输出版本号说明驱动安装成功。3. 建立连接详解连接字符串与核心参数驱动装好了我们来建立第一个连接。dmPython的接口设计很大程度上兼容了Python DB API 2.0规范同时也吸收了cx_Oracle的一些特点如果你用过这些库会感到非常熟悉。3.1 基础连接示例最基本的连接方式如下import dmPython # 配置连接参数 conn_params { server: 192.168.1.100, # 数据库服务器IP port: 5236, # 达梦默认端口是5236不是3306 user: SYSDBA, # 默认管理员用户 password: SYSDBA, # 默认密码生产环境一定要改 autoCommit: False # 是否自动提交建议False手动控制事务 } try: # 建立连接 connection dmPython.connect(**conn_params) print(连接达梦数据库成功) # 创建游标 cursor connection.cursor() # 执行一个简单查询 cursor.execute(SELECT SYSDATE FROM DUAL) result cursor.fetchone() print(f当前数据库时间{result[0]}) # 关闭游标和连接 cursor.close() connection.close() except dmPython.Error as e: print(f连接或执行失败{e})这段代码构成了一个最小化的可工作示例。但实际项目中连接参数远不止这些。3.2 连接字符串参数深度解析dmPython.connect()支持两种传参方式关键字参数如上例和连接字符串。对于复杂配置连接字符串更清晰。下面是一个包含常用高级参数的例子# 使用连接字符串 conn_str ( server192.168.1.100:5236; # 服务器地址和端口 userDATA_USER; # 业务用户 passwordYourStrongPassword; autoCommitFalse; encodingUTF-8; # 客户端字符集解决中文乱码关键 connectTimeout10; # 连接超时秒 socketTimeout30; # socket操作超时秒 loginTimeout5; # 登录认证超时秒 ) connection dmPython.connect(conn_str)这里重点解释几个容易出问题但至关重要的参数encoding这是解决中文乱码问题的核心。达梦数据库内部有独立的字符集设置可在V$PARAMETER中查看UNICODE_FLAG和CHARSET。如果Python客户端发送的字符串编码与数据库服务端预期不符就会产生乱码。将encoding明确设置为UTF-8最通用的编码可以确保驱动在传输前后进行正确的编码转换。如果你的应用涉及多语言这个参数必须设置。autoCommit默认为False。这意味着你执行的INSERT,UPDATE,DELETE语句必须显式调用connection.commit()才会持久化到数据库。如果设为True则每条DML语句都会立即提交这在某些需要事务一致性的场景下是危险的。我强烈建议保持False在代码中明确控制事务边界。超时参数connectTimeout,socketTimeout,loginTimeout。在网络不稳定或数据库压力大时这些参数能防止你的应用线程无限期挂起。根据网络状况合理设置比如内网可以设短一些跨公网或网络质量差则需延长。3.3 使用连接池管理连接对于Web应用或高频服务频繁创建和销毁数据库连接开销巨大。虽然dmPython没有内置连接池但我们可以利用DBUtils或SQLAlchemy等第三方库来实现。这里以DBUtils的PooledDB为例from dbutils.pooled_db import PooledDB import dmPython # 创建连接池 pool PooledDB( creatordmPython, # 指定使用的数据库模块 maxconnections10, # 池中最大连接数 mincached2, # 初始化时创建的空闲连接数 maxcached5, # 池中空闲连接的最大数 blockingTrue, # 连接池满时是否阻塞等待 host192.168.1.100, port5236, userDATA_USER, passwordYourStrongPassword, encodingUTF-8, autoCommitFalse ) # 从池中获取连接 def get_data(): conn pool.connection() # 注意这里不是 dmPython.connect() try: cursor conn.cursor() cursor.execute(SELECT * FROM some_table LIMIT 10) return cursor.fetchall() finally: cursor.close() conn.close() # 这个close()并非真关闭而是将连接归还给池使用连接池后应用性能会得到显著提升特别是在并发场景下。DBUtils帮我们管理了连接的复用和生命周期。4. 执行SQL操作游标使用与参数化查询连接建立后所有数据库交互都通过**游标Cursor**对象进行。dmPython的游标用法非常标准。4.1 基础查询与数据获取cursor connection.cursor() # 执行查询 cursor.execute(SELECT user_id, user_name, email FROM users WHERE status ACTIVE) # 获取所有结果 all_rows cursor.fetchall() for row in all_rows: print(fID: {row[0]}, Name: {row[1]}, Email: {row[2]}) # 或者逐行获取适合大数据集 cursor.execute(SELECT * FROM large_table) while True: row cursor.fetchone() if row is None: break # 处理每一行数据 # 获取指定数量行 some_rows cursor.fetchmany(size50) # 获取结果集的列信息非常有用 description cursor.description for col in description: print(f列名: {col[0]}, 类型: {col[1]}, 显示大小: {col[2]}, ...)fetchall()会一次性将所有结果加载到客户端内存如果结果集很大几十万、百万行可能导致内存溢出。对于大数据量查询务必使用fetchone()或fetchmany()进行循环处理。4.2 参数化查询与防SQL注入绝对不要使用字符串拼接来构造SQL语句这是SQL注入攻击的根源。务必使用参数化查询。# 错误做法危险 user_input admin OR 11 sql fSELECT * FROM users WHERE username {user_input} cursor.execute(sql) # 这将导致严重的注入漏洞 # 正确做法使用参数化查询 user_id 1001 user_name 张三 # 方式1使用问号占位符推荐兼容性最好 sql UPDATE users SET score score ? WHERE user_id ? AND dept ? cursor.execute(sql, (10, user_id, IT)) # 参数以元组形式传入 # 方式2使用命名占位符更清晰 sql INSERT INTO logs (module, level, message) VALUES (:mod, :lvl, :msg) cursor.execute(sql, {mod: API, lvl: INFO, msg: 用户登录成功})驱动会自动处理参数的类型转换和转义确保安全。dmPython同时支持?位置参数和:name命名参数两种占位符风格我更喜欢命名参数因为代码可读性更高尤其是在参数很多的时候。4.3 插入、更新、删除与事务控制对于写操作INSERT, UPDATE, DELETE必须注意事务。try: cursor connection.cursor() # 插入数据 insert_sql INSERT INTO orders (order_id, customer_id, amount, order_date) VALUES (?, ?, ?, NOW()) cursor.execute(insert_sql, (ORD20240001, CUST1001, 2999.99)) # 更新数据 cursor.execute(UPDATE inventory SET stock stock - ? WHERE product_id ?, (2, PROD005)) # 如果所有操作都成功提交事务 connection.commit() print(事务提交成功。) except dmPython.DatabaseError as e: # 如果出现任何错误回滚事务 connection.rollback() print(f操作失败已回滚{e}) finally: cursor.close()这里的关键是try...except块和显式的commit()/rollback()调用。将一系列相关的写操作放在一个事务里能保证数据的一致性要么全成功要么全失败。忘记commit()是新手常犯的错误会导致数据“看似”插入成功因为查询可能能看到未提交的数据取决于隔离级别但重启数据库后就消失了。5. 高级特性与实战避坑指南掌握了基本CRUD后我们来看看一些高级特性和实际开发中必然会遇到的“坑”。5.1 处理大对象BLOB/CLOB与中文文本达梦的BLOB二进制和CLOB字符大对象类型对应Python的bytes和str类型。处理它们时需要注意读写方式。# 写入 CLOB (长文本如文章内容) long_text 这是一篇非常长的文章内容... * 1000 cursor.execute(INSERT INTO articles (id, title, content) VALUES (?, ?, ?), (1, 测试文章, long_text)) # 直接传入字符串即可 # 写入 BLOB (如图片) with open(image.png, rb) as f: image_data f.read() cursor.execute(INSERT INTO images (id, name, data) VALUES (?, ?, ?), (1, test.png, image_data)) # 直接传入bytes # 读取 CLOB/ BLOB cursor.execute(SELECT content, data FROM articles, images WHERE ...) row cursor.fetchone() clob_data row[0] # 已经是字符串 blob_data row[1] # 已经是bytes # 将BLOB数据写回文件 if blob_data: with open(output.png, wb) as f: f.write(blob_data)对于包含大量中文的CLOB字段确保前面提到的encodingUTF-8连接参数已设置这是避免乱码的根本。5.2 调用存储过程与函数达梦数据库支持存储过程和函数。dmPython调用它们的方式略有不同。cursor connection.cursor() # 调用存储过程通常使用 CALL 语句可能包含 OUT 参数 # 假设有一个存储过程 sp_calculate_bonus(IN emp_id INT, OUT bonus DECIMAL(10,2)) emp_id 1001 cursor.callproc(sp_calculate_bonus, [emp_id, 0]) # 第二个参数是OUT参数的初始占位值 # 获取OUT参数的值 cursor.execute(SELECT ?, (cursor.varvalue,)) # 方式可能因驱动版本而异另一种常见方式是 # 对于有返回结果的存储过程可以像查询一样 fetch # 具体需参考存储过程定义和驱动文档 # 更通用的方式是使用匿名块推荐更清晰 plsql_block BEGIN :bonus : calculate_bonus(:emp_id); -- 调用函数 UPDATE employees SET total_comp salary :bonus WHERE id :emp_id; END; # 创建变量 bonus_var cursor.var(float) # 创建用于接收OUT参数的变量 cursor.execute(plsql_block, {emp_id: emp_id, bonus: bonus_var}) final_bonus bonus_var.getvalue() # 获取输出值 print(f员工 {emp_id} 的奖金是{final_bonus}) connection.commit()调用存储过程时最大的挑战是处理INOUT和OUT参数。使用cursor.var(type)创建变量对象来绑定输出参数是标准做法。建议在开发前先用数据库管理工具如达梦管理工具测试一下存储过程的调用语法和返回值。5.3 常见错误排查与性能优化错误1dmPython.Error: (-70028)或连接超时可能原因网络不通、防火墙拦截、数据库服务未启动、端口错误达梦默认是5236不是3306。排查在服务器上用netstat -tlnp | grep 5236检查达梦进程是否在监听。从客户端用telnet server_ip 5236测试端口连通性。检查客户端和服务器端的防火墙规则。错误2UnicodeDecodeError或查询结果中文乱码根本原因客户端、驱动、服务器三者的字符集不一致。解决方案首选在连接参数中强制指定encodingUTF-8。检查数据库服务器字符集SELECT * FROM V$PARAMETER WHERE NAME LIKE %CHARACTER%。确保你的Python源文件本身也是UTF-8编码保存的。错误3dmPython.Error: (-2007)无效的表或视图名可能原因大小写敏感问题。达梦在创建对象时如果对象名未用双引号括起来默认会转换为大写。但在查询时如果你的SQL里用的是小写就可能找不到。示例CREATE TABLE myTable (...)实际创建的表名是MYTABLE。查询时必须用SELECT * FROM MYTABLE或SELECT * FROM myTable。最佳实践在设计阶段就统一规范要么全部使用大写要么在创建和查询时始终对对象名使用双引号。性能优化建议使用连接池如前所述对于Web应用这是必须的。批量操作对于大量数据插入ETL场景使用executemany()比循环execute()快一个数量级。data_to_insert [(1, A), (2, B), (3, C)] cursor.executemany(INSERT INTO t (id, val) VALUES (?, ?), data_to_insert) connection.commit()合理使用fetchmany处理百万级数据时用fetchmany(1000)分批处理平衡内存和I/O。创建索引这是数据库层面的优化但对Python应用性能影响最大。分析慢查询在WHERE、JOIN、ORDER BY涉及的列上建立合适索引。关闭游标养成finally块中关闭游标的习惯或使用with上下文管理器如果驱动支持。6. 结合流行框架在Django和SQLAlchemy中使用达梦在实际项目中我们很少直接裸用dmPython而是会集成到ORM框架中。6.1 在Django中配置达梦数据库Django官方不支持达梦但可以通过第三方后端django-dm来实现。首先安装pip install django-dm然后在settings.py中配置数据库DATABASES { default: { ENGINE: django_dm, # 使用django-dm引擎 NAME: DAMENG, # 数据库名 USER: DATA_USER, PASSWORD: YourStrongPassword, HOST: 192.168.1.100, PORT: 5236, OPTIONS: { encoding: UTF-8, # 其他dmPython连接参数也可以放在这里 } } }配置好后python manage.py migrate和python manage.py runserver就可以像使用MySQL/PostgreSQL一样操作达梦数据库了。需要注意的是一些Django高级特性如特定数据库的Field类型可能需要调整。6.2 在SQLAlchemy中集成达梦SQLAlchemy通过方言Dialect支持多种数据库。达梦也有对应的方言实现例如sqlalchemy-dm。pip install sqlalchemy sqlalchemy-dm使用示例from sqlalchemy import create_engine, Column, Integer, String, MetaData from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # 创建连接引擎 # 格式dmdmPython://user:passwordhost:port/database?encodingUTF-8 engine create_engine( dmdmPython://DATA_USER:YourStrongPassword192.168.1.100:5236/DAMENG?encodingUTF-8, echoTrue # 打印SQL调试用 ) Base declarative_base() # 定义模型 class User(Base): __tablename__ users id Column(Integer, primary_keyTrue) name Column(String(50)) email Column(String(100)) # 创建表 Base.metadata.create_all(engine) # 创建会话 Session sessionmaker(bindengine) session Session() # 增删改查 new_user User(name李四, emaillisiexample.com) session.add(new_user) session.commit() users session.query(User).filter_by(name李四).all() for u in users: print(u.id, u.name, u.email) session.close()使用ORM框架能极大提升开发效率但也要注意复杂的ORM查询可能会生成非最优的SQL在性能关键路径上有时直接使用dmPython编写原生SQL或调用存储过程是更佳选择。7. 从开发到部署完整项目结构建议与监控最后分享一个我认为比较清晰的项目结构适用于中小型Python数据应用或后端服务。your_project/ ├── config/ │ ├── __init__.py │ └── settings.py # 数据库连接配置、日志配置等 ├── database/ │ ├── __init__.py │ ├── connection_pool.py # 封装连接池的创建与管理 │ └── models.py # 使用SQLAlchemy时的模型定义 ├── dao/ # 数据访问层 │ ├── __init__.py │ └── user_dao.py # 用户表相关的CRUD操作 ├── service/ # 业务逻辑层 │ └── user_service.py ├── utils/ │ └── logger.py # 日志工具 ├── scripts/ │ └── init_database.py # 初始化数据库表结构的脚本 ├── requirements.txt └── main.py在config/settings.py中使用环境变量来管理敏感信息如密码import os from dotenv import load_dotenv # 需要安装 python-dotenv load_dotenv() DM_CONFIG { host: os.getenv(DM_HOST, localhost), port: int(os.getenv(DM_PORT, 5236)), user: os.getenv(DM_USER), password: os.getenv(DM_PASSWORD), # 密码从环境变量读取不上传代码库 database: os.getenv(DM_DATABASE, DAMENG), encoding: UTF-8, }在database/connection_pool.py中集中管理连接池的创建避免在代码中硬编码。部署与监控依赖管理使用requirements.txt精确锁定所有包版本特别是dmPython的版本。健康检查在服务启动时或定时任务中添加一个简单的数据库连接检查执行SELECT 1之类的语句确保连接池有效。日志记录为数据库操作添加详细的日志记录慢查询、错误信息便于后期性能分析和故障排查。可以将dmPython驱动的日志级别调高或者使用SQLAlchemy的echoTrue在开发时查看所有SQL。连接泄露排查定期监控数据库会话SELECT * FROM V$SESSIONS如果发现大量INACTIVE状态但未关闭的会话来自你的应用说明可能存在连接未正确释放的问题回头检查代码中的close()逻辑。整个流程走下来从环境配置、驱动安装、基础连接、CRUD操作、高级特性到框架集成和项目实践核心就是细心和理解原理。达梦作为成熟的国产数据库与Python的生态对接已经相当顺畅只要理解了字符集、事务、连接管理这几个关键点剩下的就是按照Python DB API的标准模式去操作剩下的就是根据具体业务需求去深入和优化了。

相关新闻

网络模因传播:从疯狂龙虾看社交媒体内容创作

网络模因传播:从疯狂龙虾看社交媒体内容创作

1. 项目背景:龙虾热潮背后的社会现象最近社交媒体上突然刮起了一阵"疯狂的龙虾"旋风,这个看似无厘头的短语在短短几周内席卷各大平台。作为一个长期观察网络流行文化的从业者,我决定深入挖掘这个现象背后的成因和运作机制。龙虾作为…

2026/10/17 21:19:04 阅读更多 →
告别论文内耗✨一个OKBIYE搞定毕业全流程

告别论文内耗✨一个OKBIYE搞定毕业全流程

写论文最磨人的,从来不是不会写,而是细碎琐事太多、工具来回切换、反复返修内耗。 开题卡思路、综述凑字数、翻译全是机翻感、格式反复调不对、答辩PPT廉价翻车、定稿怕双检超标…… 一路走来试过无数学术工具,要么功能单一、要么模板化严重…

2026/10/17 0:07:52 阅读更多 →
答辩PPT救星✨10分钟搞定学术汇报!AI一键出片太绝了

答辩PPT救星✨10分钟搞定学术汇报!AI一键出片太绝了

谁懂啊!写论文熬秃了头,最后还被答辩PPT狠狠拿捏😭 熬夜排版、反复调版式、内容逻辑混乱、页面杂乱土气,改了一遍又一遍,不仅浪费大把时间,还容易因为PPT粗糙被扣印象分! 普通AI做PPT千篇一律…

2026/10/16 1:31:19 阅读更多 →

最新新闻

如何快速上手FoundationPose:从下载ONNX模型到完成首次物体位姿估计的完整教程

如何快速上手FoundationPose:从下载ONNX模型到完成首次物体位姿估计的完整教程

【免费下载链接】foundationpose 项目地址: https://ai.gitcode.com/hf_mirrors/nvidia/foundationpose 点击查看 免费下载 FoundationPose 是 NVIDIA 推出的统一 6-DoF 物体位姿估计与追踪基础模型。本教程带你从克隆仓库、下载 ONNX 模型文件开始,一步…

2026/10/17 21:18:27 阅读更多 →
stage1+2-distill-QKV两阶段蒸馏揭秘:Qwen2.5-7B-base-mla-topk8-rank256的训练原理详解

stage1+2-distill-QKV两阶段蒸馏揭秘:Qwen2.5-7B-base-mla-topk8-rank256的训练原理详解

大模型模型优化 【免费下载链接】Qwen2.5-7B-base-mla-topk8-rank256 项目地址: https://ai.gitcode.com/OpenMOSS/Qwen2.5-7B-base-mla-topk8-rank256 点击查看 免费下载 Qwen2.5-7B-base-mla-topk8-rank256 是一份把 Qwen2.5-7B 注意力模块改造成 MLA&#xff08…

2026/10/17 21:18:27 阅读更多 →
Keras实现CT三维图像分类:从体素预处理到Conv3D模型实战

Keras实现CT三维图像分类:从体素预处理到Conv3D模型实战

1. 3D图像分类项目到底在做什么1.1 从2D到3D:CT扫描图像的本质很多人第一次接触这个示例时会有一个疑问:CT扫描出来的不是一张张照片吗,为什么非要做成3D来分类?其实CT的原始输出就不是一张图,而是几十层甚至几百层连续…

2026/10/17 21:18:27 阅读更多 →
YOLOv5结合BiFPN改造:小目标AP提升近5个点

YOLOv5结合BiFPN改造:小目标AP提升近5个点

我最初遇到这个问题,是在一个小目标检测项目上。YOLOv5的基线模型跑起来很稳,但一到小目标密集区域就频繁漏检,尤其是那些只有几十个像素的待检物,测试集上的结果怎么调都上不去。后来我换了一下颈部特征融合结构,把原…

2026/10/17 21:18:27 阅读更多 →
PyTorch数据加载实战:Dataset、TensorDataset与DataLoader详解

PyTorch数据加载实战:Dataset、TensorDataset与DataLoader详解

1. 从一次数据加载卡顿说起:为什么需要搞懂这三个类刚接触深度学习那会儿,我写过一个图像分类的小项目。数据集不大,几千张图,我图省事,把所有图片一次性读进内存,转成张量,然后手动写了个循环&…

2026/10/17 21:18:27 阅读更多 →
脑机接口神经脉冲延迟校准:STDP在线估计与工程实践

脑机接口神经脉冲延迟校准:STDP在线估计与工程实践

第一次做闭环光标控制的脑机接口测试时,我干过一件蠢事:解码输出总慢半拍,我直接在控制回路里硬加了一个150毫秒补偿。当天确实顺了不少,可第二天同一套参数再跑,光标又飘了——神经元的放电模式变了,最优解…

2026/10/17 21:17:25 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →