Python怎么连接MySQL数据库_PyMySQL与mysql-connector-python使用教程

Python连接MySQL常用PyMySQL和mysql-connector-python,前者纯Python实现易部署,后者官方出品性能强兼容好;核心步骤包括连接、游标、执行、提交、关闭;选择依据项目需求与团队偏好。

python怎么连接mysql数据库_pymysql与mysql-connector-python使用教程

Python连接MySQL数据库,通常我们会借助第三方库来实现。目前最主流且推荐的两个选择是

PyMySQL

mysql-connector-python

。它们都提供了一套Pythonic的API接口,让开发者能够方便地与MySQL服务器进行交互,执行SQL查询、管理数据等操作。选择哪个,往往取决于项目的具体需求、团队偏好以及对官方支持的考量。

解决方案

要让Python程序与MySQL数据库“对话”,核心步骤无外乎那么几步:建立连接、创建游标、执行SQL语句、处理结果、提交或回滚事务,最后关闭连接。下面我将分别用

PyMySQL

mysql-connector-python

来演示这个过程。

使用 PyMySQL

PyMySQL

是一个纯Python实现的MySQL客户端库,这意味着它不需要编译任何C扩展,安装和部署起来相对简单。

立即学习“Python免费学习笔记(深入)”;

安装 PyMySQL:

pip install PyMySQL

连接与操作示例:

import pymysql# 数据库连接参数DB_CONFIG = {    'host': 'localhost',    'port': 3306,    'user': 'your_username',    'password': 'your_password',    'database': 'your_database',    'charset': 'utf8mb4', # 确保支持emoji等字符    'cursorclass': pymysql.cursors.DictCursor # 返回字典形式的结果}def execute_query(query, params=None, fetch_one=False):    """    一个简单的查询执行函数    """    conn = None    try:        conn = pymysql.connect(**DB_CONFIG)        with conn.cursor() as cursor:            cursor.execute(query, params)            if query.strip().upper().startswith('SELECT'):                if fetch_one:                    return cursor.fetchone()                return cursor.fetchall()            else:                conn.commit() # 非查询操作需要提交                return cursor.rowcount    except pymysql.Error as e:        print(f"数据库操作失败: {e}")        if conn:            conn.rollback() # 发生错误时回滚        return None    finally:        if conn:            conn.close()# 示例:创建表create_table_sql = """CREATE TABLE IF NOT EXISTS users (    id INT AUTO_INCREMENT PRIMARY KEY,    name VARCHAR(100) NOT NULL,    email VARCHAR(100) UNIQUE,    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"""print(f"创建表结果: {execute_query(create_table_sql)}")# 示例:插入数据insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)"users_to_insert = [    ("张三", "zhangsan@example.com"),    ("李四", "lisi@example.com")]for user_data in users_to_insert:    print(f"插入数据结果: {execute_query(insert_sql, user_data)}")# 示例:查询数据select_sql = "SELECT id, name, email FROM users WHERE name = %s"user_info = execute_query(select_sql, ("张三",), fetch_one=True)print(f"查询到用户: {user_info}")select_all_sql = "SELECT id, name, email FROM users"all_users = execute_query(select_all_sql)print(f"所有用户: {all_users}")# 示例:更新数据update_sql = "UPDATE users SET email = %s WHERE name = %s"print(f"更新结果: {execute_query(update_sql, ('zhangsan_new@example.com', '张三'))}")# 示例:删除数据delete_sql = "DELETE FROM users WHERE name = %s"print(f"删除结果: {execute_query(delete_sql, ('李四',))}")

使用 mysql-connector-python

mysql-connector-python

是Oracle官方提供的MySQL连接器,它通常被认为在某些方面(如性能、与MySQL新特性的兼容性)更具优势,因为它可能包含C扩展。

安装 mysql-connector-python:

pip install mysql-connector-python

连接与操作示例:

import mysql.connectorfrom mysql.connector import Error# 数据库连接参数DB_CONFIG_CONNECTOR = {    'host': 'localhost',    'database': 'your_database',    'user': 'your_username',    'password': 'your_password',    # 'port': 3306, # 默认3306,可省略    'charset': 'utf8mb4' # 同样重要}def execute_query_connector(query, params=None, fetch_one=False):    """    一个简单的查询执行函数 (使用mysql-connector-python)    """    conn = None    try:        conn = mysql.connector.connect(**DB_CONFIG_CONNECTOR)        if conn.is_connected():            cursor = conn.cursor(dictionary=True) # 返回字典形式的结果            cursor.execute(query, params)            if query.strip().upper().startswith('SELECT'):                if fetch_one:                    return cursor.fetchone()                return cursor.fetchall()            else:                conn.commit()                return cursor.rowcount    except Error as e:        print(f"数据库操作失败 (mysql-connector): {e}")        if conn:            conn.rollback()        return None    finally:        if conn and conn.is_connected():            cursor.close()            conn.close()# 示例:创建表 (与PyMySQL示例相同,确保数据库中没有重复表)create_table_sql_conn = """CREATE TABLE IF NOT EXISTS products (    id INT AUTO_INCREMENT PRIMARY KEY,    name VARCHAR(100) NOT NULL,    price DECIMAL(10, 2),    description TEXT) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"""print(f"创建表结果 (connector): {execute_query_connector(create_table_sql_conn)}")# 示例:插入数据insert_sql_conn = "INSERT INTO products (name, price) VALUES (%s, %s)"products_to_insert = [    ("笔记本电脑", 8999.00),    ("机械键盘", 599.50)]for product_data in products_to_insert:    print(f"插入数据结果 (connector): {execute_query_connector(insert_sql_conn, product_data)}")# 示例:查询数据select_product_sql_conn = "SELECT id, name, price FROM products WHERE name = %s"product_info = execute_query_connector(select_product_sql_conn, ("笔记本电脑",), fetch_one=True)print(f"查询到产品 (connector): {product_info}")select_all_products_sql_conn = "SELECT id, name, price FROM products"all_products = execute_query_connector(select_all_products_sql_conn)print(f"所有产品 (connector): {all_products}")

如何选择适合你的Python MySQL连接库?

在Python生态中,连接MySQL确实有好几个选择,

PyMySQL

mysql-connector-python

就是其中最常用的。我个人觉得,选择哪个库,其实更多是看你的项目场景和个人偏好。

PyMySQL

最大的优点在于它是纯Python实现。这意味着它没有C语言扩展的依赖,安装起来非常省心,通常

pip install PyMySQL

就能搞定,不太会遇到编译问题。对于大多数日常脚本、小型Web应用或者那些对部署环境有严格限制(比如一些轻量级容器)的项目,

PyMySQL

的表现已经足够优秀了。它的API设计也挺直观,用起来很顺手。如果你追求的是简洁、易部署,并且对极致性能没有那么苛刻的要求,

PyMySQL

会是一个非常好的选择。

mysql-connector-python

,作为Oracle官方维护的连接器,它最大的优势就是“官方”二字。这意味着它通常能更好地支持MySQL的新特性,兼容性也可能更强,尤其是在一些企业级应用中,对官方支持的信赖度会更高。它内部可能会包含一些C语言的优化,理论上在处理大量数据或高并发场景下,性能可能略胜一筹。但相对地,它的安装有时可能会因为系统缺少C编译器或其他依赖而稍微复杂一点点。如果你是在构建大型、对性能和稳定性有极高要求的企业级应用,或者你的团队对使用官方工具链有明确要求,那么

mysql-connector-python

无疑是更稳妥、更专业的选择。

我自己的经验是,如果只是写一些数据分析脚本,或者开发一个简单的Flask/Django小应用,我通常会倾向于用

PyMySQL

,因为它够轻量,能快速启动项目。但如果是在一个需要长期维护、可能会扩展到很复杂功能的系统中,我可能会更倾向于使用

mysql-connector-python

,毕竟有官方背书,心里会更踏实一些。当然,最终还是要看实际测试和项目团队的共识。

连接MySQL时常见的坑与解决方案

连接数据库这事儿,看起来简单,但实际操作中总会遇到一些意想不到的“坑”。我这就把一些我个人踩过的、或者经常看到别人踩的坑,以及对应的解决方案分享一下。

连接失败:Access denied for user…

问题描述: 数据库报“拒绝访问”的错误,通常是用户名、密码不对,或者你尝试连接的IP地址没有被授权。解决方案:检查凭证: 仔细核对

user

password

是否正确。有时候手滑输错一个字符就得找半天。检查主机权限: MySQL的用户权限是绑定到特定主机的。例如

'your_username'@'localhost'

'your_username'@'%'

是不同的。如果你从远程机器连接,确保MySQL用户被授权从该IP地址(或

%

表示所有IP)连接。可以使用

GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'your_ip_address' IDENTIFIED BY 'your_password';

来授权。授权后记得

FLUSH PRIVILEGES;

连接失败:Can’t connect to MySQL server on ‘…’ (111)

问题描述: 无法连接到MySQL服务器。这通常是网络问题、服务器未运行或端口被占用/防火墙阻挡。解决方案:MySQL服务状态: 确认MySQL服务是否正在运行。在Linux上可以用

sudo systemctl status mysql

sudo service mysql status

IP地址和端口: 检查

host

port

是否正确。默认端口是3306。防火墙: 服务器的防火墙可能阻止了来自你Python程序的连接。你需要允许3306端口的入站连接。例如在Linux上,

sudo ufw allow 3306

或配置

iptables

网络连通性: 尝试从Python程序运行的机器

ping

一下MySQL服务器的IP,或者用

telnet your_mysql_host 3306

看看端口是否开放。

乱码问题:字符集不匹配

问题描述: 从数据库读取的数据出现乱码,或者写入的数据在数据库中显示为问号。解决方案:统一字符集: 最常见的解决方案是确保Python连接时使用的字符集与数据库、表、列的字符集保持一致。对于多语言和emoji支持,强烈建议使用

utf8mb4

。在连接参数中明确指定

charset='utf8mb4'

。检查数据库、表、列的字符集是否也是

utf8mb4

。可以通过

SHOW VARIABLES LIKE 'character_set_database';

SHOW CREATE TABLE your_table_name;

来查看。

SQL注入漏洞

问题描述: 如果你直接用字符串拼接的方式来构建SQL查询,比如

"SELECT * FROM users WHERE name = '" + username + "'"

,那么恶意用户就可以通过输入特殊字符来执行任意SQL,造成严重的安全漏洞。

解决方案:

使用参数化查询: 这是最重要、最有效的防范措施。Python的数据库API(DB-API 2.0)标准支持参数化查询。你只需要在SQL语句中使用占位符(

%s

?

,取决于库),然后将参数作为元组或列表传递给

execute()

方法。数据库驱动会负责正确地转义这些参数。

# 错误示例 (容易SQL注入)# username = "admin' OR '1'='1"# cursor.execute(f"SELECT * FROM users WHERE name = '{username}'")

正确示例 (参数化查询)

username = “admin”cursor.execute(“SELECT * FROM users WHERE name = %s”, (username,)) # PyMySQL/mysql-connector-python 常用 %s


资源泄露:忘记关闭连接和游标

问题描述: 每次操作完数据库,如果没有显式地关闭连接(

conn.close()

)和游标(

cursor.close()

),可能会导致数据库连接池耗尽,或者服务器资源被长时间占用。解决方案:使用

with

语句: Python的

with

语句是管理资源(如文件、数据库连接)的利器。它能确保在代码块执行完毕后,无论是否发生异常,资源都能被正确关闭。

import pymysqltry:conn = pymysql.connect(**DB_CONFIG)with conn.cursor() as cursor: # 游标会自动关闭    # 执行数据库操作    cursor.execute("SELECT 1")conn.commit() # 事务提交except pymysql.Error as e:if conn:    conn.rollback()finally:if conn:    conn.close() # 连接也需要手动关闭或在连接池中管理

对于连接,如果使用连接池,则不需要手动关闭,而是将连接归还给连接池。

这些都是我在实际开发中经常碰到的问题,提前了解并采取预防措施,能省下不少调试时间。

如何在Python应用中更优雅地管理MySQL连接?

在实际的Python应用,尤其是在Web服务或长时间运行的后台任务中,仅仅知道如何连接和执行查询是远远不够的。连接的管理,比如如何高效复用、如何安全存储凭证、如何处理异常,这些都直接影响到应用的性能、稳定性和安全性。我个人在构建系统时,会特别关注以下几个方面,让数据库连接的管理变得更“优雅”。

连接池(Connection Pooling):性能与资源复用的基石

为什么需要它? 每次建立数据库连接都有不小的开销,包括TCP握手、身份验证等。在高并发场景下,频繁地创建和销毁连接会显著降低应用性能,并可能耗尽数据库服务器的连接资源。连接池就是为了解决这个问题而生。

工作原理: 连接池维护了一组预先建立好的数据库连接。当应用需要连接时,它从池中“借用”一个连接;当操作完成后,连接会被“归还”到池中,而不是真正关闭。这样就大大减少了连接建立和关闭的开销。

如何实现?

许多Web框架(如Django、SQLAlchemy)都内置或提供了连接池的集成。

对于纯DB-API的使用,可以使用像

DBUtils

这样的库来创建连接池。

PyMySQL示例(使用DBUtils的PooledDB):

from DBUtils.PooledDB import PooledDBimport pymysqlDB_CONFIG_POOL = {    'host': 'localhost',    'port': 3306,    'user': 'your_username',    'password': 'your_password',    'database': 'your_database',    'charset': 'utf8mb4',    'cursorclass': pymysql.cursors.DictCursor}# 创建连接池,mincached表示启动时创建的最小连接数,maxcached表示最多可缓存的连接数# maxconnections表示允许的最大连接数,blocking表示当连接池满时是否阻塞等待POOL = PooledDB(pymysql, mincached=5, maxcached=10, maxconnections=20, blocking=True, **DB_CONFIG_POOL)def get_pooled_connection():    return POOL.connection()# 示例使用def query_with_pool(sql, params=None):    conn = None    try:        conn = get_pooled_connection() # 从池中获取连接        with conn.cursor() as cursor:            cursor.execute(sql, params)            if sql.strip().upper().startswith('SELECT'):                return cursor.fetchall()            else:                conn.commit()                return cursor.rowcount    except pymysql.Error as e:        print(f"数据库操作失败 (带连接池): {e}")        if conn:            conn.rollback()        return None    finally:        if conn:            conn.close() # 归还连接到池中,而不是真正关闭

我个人觉得,在任何需要处理并发请求的应用中,连接池都是一个必须考虑的组件。它能极大地提升应用的响应速度和资源利用率。

配置管理:安全与灵活性的平衡

**为什么

以上就是Python怎么连接MySQL数据库_PyMySQL与mysql-connector-python使用教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1371070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
python如何将小写字母转换为大写_python字符串大小写转换方法
上一篇 2025年12月14日 11:06:55
Python怎么判断一个变量的类型_Python变量类型判断技巧
下一篇 2025年12月14日 11:07:07

相关推荐

  • QQ好友消息不提示怎么办 QQ消息通知设置与恢复方法

    手机QQ收不到消息提示通常因通知权限关闭或设置问题,需检查QQ内【新消息通知】开关是否开启;2. 查看手机系统设置中QQ的通知权限,确保允许显示通知并开启声音、震动等提醒;3. 使用QQ内置的【消息通知修复】工具自动修复异常;4. 关闭省电模式或将QQ加入电池优化白名单,确保后台正常运行。 手机QQ…

    2026年9月21日
    000
  • win10打开图片提示“没有注册类”怎么办_win10图片打开注册类错误解决方案

    首先重置照片应用并修复系统文件,再通过PowerShell重新注册应用包,最后调整默认应用关联以解决“没有注册类”错误。 如果您尝试在Windows 10中打开图片文件,但系统弹出“没有注册类”的错误提示,则可能是由于默认图片查看应用的注册信息丢失或损坏。以下是解决此问题的步骤: 本文运行环境:De…

    2026年9月21日
    100
  • Xdebug配置与故障排除:解决PHP调试连接导致的网页超时问题

    本文旨在解决Xdebug在IDE未监听调试连接时可能导致的网页加载缓慢或超时问题。我们将深入探讨Xdebug的工作原理、关键配置参数,并提供一套系统的故障排除方法,包括如何启用详细日志记录以及检查多重配置文件的影响,以确保Xdebug仅在需要时激活,避免不必要的性能开销。 1. 理解Xdebug的工…

    2026年9月21日
    000
  • 一部手机+蝴蝶号账号,开启你的直播副业之路

    一部手机+蝴蝶号账号,开启你的直播副业之路一部手机+蝴蝶号账号,开启你的直播副业之路一部手机+蝴蝶号账号,开启你的直播副业之路一部手机+蝴蝶号账号,开启你的直播副业之路

    开启直播副业确实可行,但需系统规划与长期坚持。1.选择舒适且有热情的内容领域,如技能教学、生活经验或兴趣分享,确保可持续输出;2.利用智能手机基础设备,搭配支架、补光灯等低成本工具提升画面稳定与光线效果;3.注册直播平台账号后,熟悉后台功能以优化直播体验;4.初期通过社交媒体预告宣传引流,并以高质量…

    2026年9月21日 用户投稿
    000
  • 怎么全选VSCode多个光标_VSCode多光标操作与批量选择文本教程

    VSCode中高效创建多光标的方法包括:Alt+Click手动添加光标,适用于不规则位置;Ctrl+Alt+方向键垂直添加光标,适合连续多行操作;Ctrl+D逐个选择匹配项,精准控制选择范围;Ctrl+Shift+L一次性选择所有匹配项,实现全局批量修改。结合查找替换和列选择模式可进一步提升编辑效率…

    2026年9月21日
    000
  • MySQL自动化性能测试方案_MySQL持续监控调优数据库效率

    MySQL自动化性能测试方案_MySQL持续监控调优数据库效率MySQL自动化性能测试方案_MySQL持续监控调优数据库效率MySQL自动化性能测试方案_MySQL持续监控调优数据库效率MySQL自动化性能测试方案_MySQL持续监控调优数据库效率

    mysql自动化性能测试和持续监控的核心在于构建闭环反馈系统,包含模拟真实负载、全面数据采集、自动化执行与分析、数据驱动的持续调优四大环节。①测试环境需与生产一致并隔离,使用docker、虚拟机或云沙盒,解决数据同步与脱敏问题;②负载生成工具如sysbench、jmeter、locust或自定义脚本…

    2026年9月21日 用户投稿
    100
  • UC浏览器如何将网页内容分享到微信_UC浏览器网页分享至微信教程

    打开UC浏览器进入目标网页,点击右上角三点菜单选择“分享”,在应用列表中点击微信好友或朋友圈并发送;2. 若分享功能异常,可长按地址栏复制链接后粘贴至微信聊天窗口发送;3. 如需分享特定图文内容,可通过电源键加音量减键截图,再从相册选择图片发送给微信联系人。 如果您想将UC浏览器中浏览的网页内容快速…

    2026年9月21日
    000
  • PHP面向对象编程:解决父类构造器传递值在子对象方法中为空的问题

    本文探讨了PHP中一个常见的面向对象编程问题:当父类构造器接收并初始化一个子对象时,如何确保该子对象内部的方法能正确访问到父类传递的值,避免出现null。文章将通过示例代码,详细介绍两种核心解决方案:通过控制器提供内部对象的访问器(Getter),以及采用依赖注入(Dependency Inject…

    2026年9月21日
    300
  • mac怎么查看具体的内存型号_mac内存型号查询方法

    首先通过“关于本机”查看内存容量与类型,再进入“系统报告”的内存页面获取各插槽的制造商、型号、部件编号和速度等详细信息,最后使用“活动监视器”分析内存使用情况以判断是否需要升级。 如果您想了解Mac设备中安装的内存具体型号和规格,但系统概览仅显示总容量,则需要通过特定工具深入查看硬件信息。以下是查询…

    2026年9月21日
    000
  • CyberLinkMediaSuite如何制作AI视频?多功能工具快速剪辑的方法

    CyberLinkMediaSuite如何制作AI视频?多功能工具快速剪辑的方法CyberLinkMediaSuite如何制作AI视频?多功能工具快速剪辑的方法CyberLinkMediaSuite如何制作AI视频?多功能工具快速剪辑的方法CyberLinkMediaSuite如何制作AI视频?多功能工具快速剪辑的方法

    答案:CyberLink MediaSuite(核心为PowerDirector)通过AI艺术风格转换、智能对象选取、AI天空替换、音频降噪与运动追踪等功能,显著提升视频制作效率与创意表现。结合模板应用、快捷键操作、媒体库管理及代理编辑等实战技巧,可实现快速剪辑与专业输出,适用于Vlog创作、教育视…

    2026年9月21日 用户投稿
    200
  • Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]

    Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]Win10与Ubuntu 18.04双系统安装。(Win10引导Linux)[通俗易懂]

    大家好,很高兴再次与大家见面,我是你们的老朋友全栈君。 作为一个初学者,为了满足自己的求知欲,我按照几位大神写的教程尝试了一遍安装过程,现在来和大家分享一下。 1、Win10安装(如果已经安装,请跳过) 1)制作系统U盘(参考微信公众号“软件安装管家”): https://www.php.cn/li…

    2026年9月21日 用户投稿
    300
  • 百家号视频怎么隐藏?百家号怎么设置仅自己可见

    随着短视频平台的快速发展,其已成为人们获取资讯和休闲娱乐的重要方式。作为国内知名的自媒体平台之一,百家号吸引了大量用户。然而,在享受便捷的同时,隐私安全问题也日益突出。本文将介绍百家号视频隐藏的方法,帮助用户更好地保护个人内容,维护隐私安全。 一、百家号视频隐藏方法 设置隐私权限 在百家号后台,用户…

    2026年9月21日
    100
  • MySQL数据库如何设计适合大数据量的表结构_案例分析?

    MySQL数据库如何设计适合大数据量的表结构_案例分析?MySQL数据库如何设计适合大数据量的表结构_案例分析?MySQL数据库如何设计适合大数据量的表结构_案例分析?MySQL数据库如何设计适合大数据量的表结构_案例分析?

    设计适合大数据量的mysql表结构,核心在于数据类型选对、索引用好、适当拆分。1. 合理选择字段类型,如根据数据范围选用tinyint/smallint代替bigint,固定值字段用enum类型,大文本字段单独拆表;2. 精准建立索引,高频查询字段建联合索引并遵循最左前缀原则,避免低区分度字段建索引…

    2026年9月21日 用户投稿
    100
  • VSCode怎么改环境_VSCode切换Python/Node等多版本环境教程

    切换VSCode环境需先安装对应语言扩展,再通过命令面板选择解释器或使用nvm切换Node版本,配合虚拟环境或launch.json配置确保运行和调试时使用正确版本,可通过终端命令验证环境,若失效可检查缓存、扩展冲突或权限问题。 VSCode改环境,其实就是让VSCode知道你想用哪个版本的Pyth…

    2026年9月21日
    000
  • 构建与调试PHP简易路由系统:从原理到实践

    本文将指导您如何从零开始构建一个基础的PHP路由系统,实现URL到控制器和方法的映射。我们将深入探讨$_SERVER[‘REQUEST_URI’]的解析、控制器文件的动态加载、方法调用以及如何通过.htaccess进行URL重写。同时,文章还将详细讲解常见的“未定义变量”错误…

    2026年9月21日
    100
  • windows10如何查看S.M.A.R.T.硬盘状态_windows10硬盘S.M.A.R.T.状态查看方法

    电脑运行慢、蓝屏或文件损坏可能是硬盘故障前兆,可通过S.M.A.R.T.技术检测健康状况。1、使用WMIC命令行工具输入“wmic diskdrive get model,status”查看状态,显示Pred Fail需立即备份数据;2、CrystalDiskInfo可深度分析S.M.A.R.T.参…

    2026年9月21日
    100
  • Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能通过智能选择工具与内容感知技术结合,实现高效图片裁剪。首先使用对象选择、快速选择或魔棒工具智能识别主体或背景,再通过“选择并遮住”精细调整边缘,尤其适用于复杂轮廓如发丝。随后可应用图层蒙版透明化背景,并用裁剪工具调整画布范围。结合内容感知填充可移除干扰元素并自动补全画面,内…

    2026年9月21日 用户投稿
    300
  • Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担

    Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担

    在web开发中使用mysql存储过程能有效封装逻辑并减少前端负担,本文介绍了其优势、环境配置及实战技巧。一、存储过程的优势包括减少网络传输、提高性能、统一业务逻辑;二、sublime text配置步骤为安装package control、sublimerepl插件、sql语法高亮插件,并建议新建.s…

    2026年9月21日 用户投稿
    800
  • Linux中如何安装Redis_Linux安装Redis服务的完整教程

    安装编译环境和依赖:Ubuntu/Debian用apt安装build-essential tcl wget,CentOS/RHEL用yum安装Development Tools和tcl wget。2. 下载Redis 7.2.4源码包并%ignore_a_1%,进入目录后执行make编译,可选mak…

    2026年9月21日
    000
  • 编译CEGUI「建议收藏」

    大家好,很高兴再次与你们见面,我是你们的老朋友全栈君。 平台: Windows 7 / 64位 / VS2005 CEGUI下载 地址:https://www.php.cn/link/9a2327a2fcc570914ce9c9e61581cbf8 源码选择: CEGUI 0.7.9 库源码下载 这…

    2026年9月21日
    000

发表回复

登录后才能评论
关注微信