python如何连接mysql数据库_python使用PyMySQL连接MySQL数据库教程

Python连接MySQL通常使用PyMySQL库,它通过提供接口实现数据增删改查,建立连接需安装库、配置参数、创建游标、执行SQL、提交事务并关闭连接;推荐使用环境变量或配置文件管理数据库凭证以提升安全性,避免硬编码;PyMySQL为纯Python实现,兼容Python 3且安装简便,相较MySQLdb更适用于现代项目;处理中文时应设置charset=’utf8mb4’防止乱码,并利用DictCursor返回字典形式结果;常见问题如连接失败需检查网络、权限、用户名密码及端口,SQL错误则需验证语法、表名、列名和数据类型;事务管理需手动关闭自动提交,通过commit()提交或rollback()回滚以保证数据一致性;防范SQL注入必须使用参数化查询,禁止字符串拼接SQL。

python如何连接mysql数据库_python使用pymysql连接mysql数据库教程

Python连接MySQL数据库,通常我们会借助专门的数据库连接库,比如非常流行的

PyMySQL

。它提供了一套接口,让你的Python程序能够像和本地对象交互一样,发送SQL指令、获取数据、管理事务,实现数据的增删改查。说白了,它就是Python和MySQL之间的一座桥梁,让你能用Python的语法去操作MySQL。

在Python项目里使用PyMySQL连接MySQL数据库,其实并没有想象中那么复杂。我们通常会分几步走:先是安装库,然后建立连接,接着创建游标来执行SQL语句,处理完数据后别忘了提交更改或者回滚,最后关闭连接。

首先,你得确保你的Python环境里安装了

PyMySQL

。这通常通过

pip

命令就能搞定:

pip install PyMySQL

安装好了之后,就可以开始写代码了。一个基本的连接和操作流程大概是这样:

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

import pymysql# 数据库连接参数,这里建议不要硬编码在代码里,后面会提到更安全的做法DB_CONFIG = {    'host': 'localhost',  # 数据库服务器地址    'user': 'your_username',  # 数据库用户名    'password': 'your_password',  # 数据库密码    'database': 'your_database',  # 要连接的数据库名称    'charset': 'utf8mb4',  # 字符集,很重要,避免乱码    'cursorclass': pymysql.cursors.DictCursor # 让查询结果以字典形式返回,方便操作}connection = None # 初始化连接变量try:    # 建立数据库连接    connection = pymysql.connect(**DB_CONFIG)    print("数据库连接成功!")    # 创建一个游标对象,用于执行SQL查询    # DictCursor 会让查询结果以字典形式返回,方便通过列名访问数据    with connection.cursor() as cursor:        # 示例:创建一个表(如果不存在)        create_table_sql = """        CREATE TABLE IF NOT EXISTS users (            id INT AUTO_INCREMENT PRIMARY KEY,            name VARCHAR(255) NOT NULL,            email VARCHAR(255) UNIQUE NOT NULL        ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;        """        cursor.execute(create_table_sql)        print("表 'users' 检查或创建完成。")        # 示例:插入一条数据        insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)"        user_data = ('张三', 'zhangsan@example.com')        cursor.execute(insert_sql, user_data)        connection.commit() # 提交事务,保存更改        print(f"插入数据成功:{user_data}")        # 示例:查询所有数据        select_sql = "SELECT id, name, email FROM users"        cursor.execute(select_sql)        results = cursor.fetchall() # 获取所有查询结果        print("n当前用户列表:")        if results:            for row in results:                print(f"ID: {row['id']}, 姓名: {row['name']}, 邮箱: {row['email']}")        else:            print("没有找到用户数据。")        # 示例:更新一条数据        update_sql = "UPDATE users SET name = %s WHERE email = %s"        update_data = ('李四', 'zhangsan@example.com')        cursor.execute(update_sql, update_data)        connection.commit()        print(f"更新数据成功:将 'zhangsan@example.com' 的姓名更新为 '李四'")        # 再次查询确认更新        cursor.execute(select_sql)        results_after_update = cursor.fetchall()        print("n更新后的用户列表:")        for row in results_after_update:            print(f"ID: {row['id']}, 姓名: {row['name']}, 邮箱: {row['email']}")except pymysql.Error as e:    print(f"数据库操作失败: {e}")    if connection:        connection.rollback() # 发生错误时回滚事务        print("事务已回滚。")except Exception as e:    print(f"发生未知错误: {e}")finally:    if connection:        connection.close() # 确保连接被关闭        print("数据库连接已关闭。")

这段代码展示了从连接到执行增删改查的基本流程。特别要注意的是

charset='utf8mb4'

,这对于处理中文或其他多语言字符非常重要,可以有效避免乱码问题。另外,使用

with connection.cursor() as cursor:

这种上下文管理器的方式,可以确保游标在使用完毕后被正确关闭,这是一种良好的编程习惯。

PyMySQL与MySQLdb:Python数据库连接库的选择困境与我的看法

在Python连接MySQL的生态里,

PyMySQL

MySQLdb

是两个绕不开的名字。很多初学者可能都会纠结,到底用哪个好?我个人觉得,这其实是一个时代演进的问题。

MySQLdb

是比较早期的、非常成熟的Python MySQL连接器,它底层是用C语言实现的,所以性能上确实有优势。但它的主要问题在于,它最初是为Python 2设计的,对Python 3的支持就显得有些力不从心,安装起来也常常需要编译C扩展,这在不同操作系统环境下可能会遇到各种依赖问题,挺让人头疼的。我记得以前在Windows上安装

MySQLdb

,那简直就是一场与编译器的斗争。

PyMySQL

呢,它是一个纯Python实现的库,这意味着它不依赖任何C语言扩展,安装起来就简单得多,直接

pip install PyMySQL

就行,跨平台兼容性非常好。更重要的是,它从一开始就是为Python 3设计的,完美支持Python 3的各种特性。虽然纯Python实现理论上性能会比C实现略低,但在大多数Web应用和日常数据操作场景下,这种差异几乎可以忽略不计。它的API设计也和DB-API 2.0规范保持一致,用起来很顺手。

所以,我的建议是,如果你正在开发一个全新的Python 3项目,或者打算将现有项目迁移到Python 3,那么毫不犹豫地选择

PyMySQL

。它更现代、更易于安装和维护,社区也比较活跃。如果你的项目还在Python 2上跑,或者有非常苛刻的性能要求且能忍受

MySQLdb

的安装复杂性,那可能才会考虑

MySQLdb

。但就目前而言,

PyMySQL

无疑是更主流、更推荐的选择。

安全连接MySQL:如何妥善管理Python中的数据库凭证?

将数据库的用户名、密码等敏感信息直接写在代码里(就像我上面那个示例里那样),在开发阶段图个方便可能还行,但一旦项目上线,这简直就是个安全大漏洞。想象一下,如果你的代码库被泄露,数据库的门就直接敞开了。所以,妥善管理数据库凭证是生产环境中非常重要的一环。

有几种比较常见的做法,可以有效提升安全性:

使用环境变量: 这是我最推荐的一种方式。你可以在部署服务器上设置环境变量,比如

MYSQL_HOST

MYSQL_USER

MYSQL_PASSWORD

等。Python程序启动时,通过

os.getenv()

来获取这些值。这样,敏感信息就不会出现在代码仓库里,也方便在不同的部署环境(开发、测试、生产)中使用不同的配置。

import osimport pymysqlDB_CONFIG = {    'host': os.getenv('MYSQL_HOST', 'localhost'), # 默认值,防止环境变量未设置    'user': os.getenv('MYSQL_USER', 'root'),    'password': os.getenv('MYSQL_PASSWORD', ''),    'database': os.getenv('MYSQL_DATABASE', 'test_db'),    'charset': 'utf8mb4',    'cursorclass': pymysql.cursors.DictCursor}# ... 后续连接代码 ...

在Linux/macOS中,你可以在终端这样设置:

export MYSQL_HOST='your_host'
export MYSQL_USER='your_user'
export MYSQL_PASSWORD='your_password'

配置文件: 可以使用

.ini

.json

.yaml

等格式的配置文件来存储数据库凭证。比如,创建一个

config.ini

文件:

[database]host = localhostuser = your_usernamepassword = your_passworddatabase = your_database

然后在Python代码中读取:

import configparserimport osimport pymysqlconfig = configparser.ConfigParser()# 尝试从当前目录或指定路径加载配置文件config_path = os.path.join(os.path.dirname(__file__), 'config.ini')if os.path.exists(config_path):    config.read(config_path)else:    print("Warning: config.ini not found, falling back to environment variables or defaults.")    # 如果配置文件不存在,可以考虑从环境变量获取或使用默认值DB_CONFIG = {    'host': config.get('database', 'host', fallback=os.getenv('MYSQL_HOST', 'localhost')),    'user': config.get('database', 'user', fallback=os.getenv('MYSQL_USER', 'root')),    'password': config.get('database', 'password', fallback=os.getenv('MYSQL_PASSWORD', '')),    'database': config.get('database', 'database', fallback=os.getenv('MYSQL_DATABASE', 'test_db')),    'charset': 'utf8mb4',    'cursorclass': pymysql.cursors.DictCursor}# ... 后续连接代码 ...

关键点在于: 这个

config.ini

文件本身不应该被提交到公共的代码仓库中。你应该把它添加到

.gitignore

文件里。在部署时,手动将配置文件放到服务器上,或者通过部署工具注入。

云服务商的秘密管理服务: 如果你的应用部署在云平台上(如AWS Secrets Manager, Azure Key Vault, Google Secret Manager),这些服务提供了更高级的凭证管理方案,可以动态获取、轮换凭证,安全性更高。这通常适用于大型、复杂的云原生应用。

无论你选择哪种方式,核心原则都是将敏感信息与代码分离,并且确保敏感信息本身在传输和存储过程中是安全的。

PyMySQL常见问题排查:连接失败?SQL报错?这里有解决思路

在使用PyMySQL连接MySQL数据库时,遇到各种错误是家常便饭。很多时候,错误信息本身就能提供不少线索,但有时也需要一些排查技巧。

连接失败 (

OperationalError: (2003, "Can't connect to MySQL server on ...")

(1045, "Access denied for user ...")

)

检查网络连接和主机地址: 确保你的Python应用能够访问到MySQL服务器的IP地址或域名。

ping your_mysql_host

命令可以初步测试网络连通性。如果MySQL服务器在远程,检查防火墙是否阻止了连接(通常MySQL默认端口是3306)。检查MySQL服务是否运行: 确保MySQL服务本身正在运行。在Linux上,

sudo systemctl status mysql

sudo service mysql status

检查端口: 确认

host

port

参数是否正确。默认是

3306

,但有时会被修改。检查用户名和密码: 这是最常见的错误之一。仔细核对

user

password

是否正确,注意大小写。检查用户权限: 即使用户名密码正确,该用户可能没有从你的客户端IP地址连接的权限,或者没有访问特定数据库的权限。在MySQL里,你可以用

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

来授予权限,然后

FLUSH PRIVILEGES;

。如果是

'%'

则表示任何IP。检查数据库名称: 确认

database

参数拼写无误,且该数据库确实存在。

SQL语句执行错误 (

ProgrammingError

DataError

)

SQL语法错误 (

ProgrammingError: (1064, "You have an error in your SQL syntax...")

): 这是最直接的。错误信息通常会指出SQL语句的哪一部分有问题。仔细检查你的SQL语句,看看有没有拼写错误、缺少逗号、引号不匹配、关键词使用不当等。可以尝试在MySQL客户端(如

mysql

命令行工具或

MySQL Workbench

)中直接执行这条SQL,看是否能复现错误,这样定位问题会更快。表或列不存在 (

ProgrammingError: (1146, "Table 'your_database.your_table' doesn't exist")

(1054, "Unknown column '...' in 'field list'")

): 确认你引用的表名和列名是正确的,并且数据库中确实存在。注意大小写,MySQL在某些操作系统上(如Linux)对表名是大小写敏感的。数据类型不匹配或约束违规 (

DataError

IntegrityError

):比如,你尝试将一个过长的字符串插入到

VARCHAR(10)

的列中,或者将非数字字符插入到

INT

列。

IntegrityError

通常是违反了唯一约束(

UNIQUE

)、非空约束(

NOT NULL

)或外键约束。例如,你插入了一个已经存在的唯一值。字符集问题: 如果你看到乱码,或者在插入特定字符时报错,很可能是字符集设置不正确。确保数据库、表、列以及PyMySQL连接时的

charset

都设置为

utf8mb4

,并且客户端的终端也支持

utf8mb4

调试技巧:

打印SQL语句和参数: 在执行

cursor.execute()

之前,把完整的SQL语句(包括替换后的参数)打印出来,这样可以直观地看到发送给数据库的到底是什么。查看MySQL错误日志: MySQL服务器本身会记录错误日志,这些日志通常包含更详细的错误信息,可以帮助你定位服务器端的问题。逐步调试: 使用Python的调试器(如

pdb

或IDE的调试功能)逐步执行代码,检查变量的值,特别是SQL语句和传递的参数。

遇到问题不要慌,先看错误信息,它往往就是最好的老师。结合这些排查思路,大多数连接和SQL执行问题都能迎刃而解。

进阶应用:PyMySQL如何实现事务管理与防范SQL注入?

数据库操作,尤其是涉及多个步骤的数据修改,事务管理就显得尤为重要。同时,面对无处不在的网络攻击,SQL注入防范更是重中之重。PyMySQL在这两方面都提供了成熟的解决方案。

事务管理

事务(Transaction)是一组原子性的数据库操作。要么这些操作全部成功提交,要么全部失败回滚,不会出现部分成功的情况。这对于保持数据的一致性和完整性至关重要,比如银行转账,从一个账户扣钱,给另一个账户加钱,这两个操作必须同时成功或同时失败。

PyMySQL默认是开启自动提交(autocommit)的,这意味着你每执行一条SQL语句,数据库都会立即提交更改。但在需要事务管理的场景下,我们需要手动关闭自动提交,然后显式地进行提交或回滚。

import pymysqlDB_CONFIG = {    'host': 'localhost',    'user': 'your_username',    'password': 'your_password',    'database': 'your_database',    'charset': 'utf8mb4',    'cursorclass': pymysql.cursors.DictCursor}connection = Nonetry:    connection = pymysql.connect(**DB_CONFIG)    # 关闭自动提交,手动管理事务    connection.autocommit(False)    print("数据库连接成功,自动提交已关闭。")    with connection.cursor() as cursor:        # 假设我们有一个 accounts 表,有 id 和 balance 字段        # 示例:创建 accounts 表        create_table_sql = """        CREATE TABLE IF NOT EXISTS accounts (            id INT AUTO_INCREMENT PRIMARY KEY,            name VARCHAR(255) NOT NULL,            balance DECIMAL(10, 2) NOT NULL DEFAULT 0.00        ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;        """        cursor.execute(create_table_sql)        # 确保有测试数据        cursor.execute("INSERT IGNORE INTO accounts (id, name, balance) VALUES (1, 'Alice', 1000.00)")        cursor.execute("INSERT IGNORE INTO accounts (id, name, balance) VALUES (2, 'Bob', 500.00)")        connection.commit() # 提交初始数据        print("n开始转账事务:从 Alice 转 200 到 Bob")        # 1. Alice 账户扣除 200        update_alice_sql = "UPDATE accounts SET balance = balance - %s WHERE id = %s"        cursor.execute(update_alice_sql, (200.00, 1))        print("Alice 账户扣除 200。")        # 模拟一个可能失败的操作,比如 Bob 的账户不存在,或者余额不足等        # if True: # 假设这里有个条件判断,如果失败就抛异常        #     raise ValueError("模拟转账失败!")        # 2. Bob 账户增加 200        update_bob_sql = "UPDATE accounts SET balance = balance + %s WHERE id = %s"        cursor.execute(update_bob_sql, (200.00, 2))        print("Bob 账户增加 200。")        # 如果所有操作都成功,则提交事务        connection.commit()        print("转账事务成功提交!")except pymysql.Error as e:    print(f"数据库操作失败: {e}")    if connection:        connection.rollback() # 任何一步出错,都回滚所有操作        print("事务已回滚,数据恢复到转账前状态。")except Exception as e:    print(f"发生未知错误: {e}")    if connection:        connection.rollback()        print("事务已回滚。")finally:    if connection:        connection.close()        print("数据库连接已关闭。")# 再次查询确认结果try:    connection = pymysql.connect(**DB_CONFIG)    with connection.cursor() as cursor:        cursor.execute("SELECT id, name, balance FROM accounts WHERE id IN (1, 2)")        results = cursor.fetchall()        print("n转账后的账户余额:")        for row in results:            print(f"ID: {row['id']}, 姓名: {row['name']}, 余额: {row['balance']}")except pymysql.Error as e:    print(f"查询余额失败: {e}")finally:    if connection:        connection.close()

在这个例子中,

connection.autocommit(False)

是关键。它告诉PyMySQL,后续的SQL操作不会立即生效,直到你调用

connection.commit()

。如果中间出现任何异常,

connection.rollback()

会撤销所有未提交的更改,确保数据的一致性。

防范SQL注入

SQL注入是一种常见的Web安全漏洞,攻击者通过在输入字段中插入恶意的SQL代码,来操纵数据库查询,可能导致数据泄露、篡改甚至删除。

PyMySQL,以及所有遵循DB-API 2.0规范的Python数据库连接库,都提供了强大的机制来防范SQL注入,那就是参数化查询(Parameterized Queries)

错误的做法(容易被SQL注入):

# 千万不要这样做!user_input = "'; DROP TABLE users; --" # 攻击者输入sql = f"SELECT * FROM users WHERE name = '{user_input}'"# 最终SQL会变成:SELECT * FROM users WHERE name = ''; DROP TABLE users; --'# 这会导致你的 users 表被删除!cursor.execute(sql)

正确的做法(使用参数化查询):


以上就是python如何连接mysql数据库_python使用PyMySQL连接MySQL数据库教程的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
python中args和**kwargs是什么意思_Python中args与**kwargs参数用法解析
上一篇 2025年12月14日 11:29:21
python如何将一个整数转换为字符串_python整数与字符串类型转换方法
下一篇 2025年12月14日 11:29:41

相关推荐

  • 修复Django电商项目中AJAX过滤产品列表图片不显示问题

    在Django电商项目中,当使用AJAX动态加载过滤后的产品列表时,常遇到图片无法正常显示的问题。这通常是由于前端模板中图片加载方式(如data-setbg属性结合JavaScript库)与AJAX动态内容更新机制不兼容所致。解决方案是直接在AJAX返回的HTML中使用标准的标签来渲染图片,确保浏览…

    2026年5月10日
    000
  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • Matplotlib 地图中多类型图例的创建与优化

    Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化

    本教程旨在解决matplotlib地图可视化中,如何在一个图例中同时展示颜色块(如区域分类)和自定义标记(如特定兴趣点)的问题。文章详细介绍了当传统`patch`对象无法正确显示标记时,如何利用`matplotlib.lines.line2d`创建标记图例句柄,并将其与颜色块图例句柄合并,从而生成一…

    2026年5月10日 用户投稿
    100
  • Golang JSON序列化:控制敏感字段暴露的最佳实践

    本教程探讨golang中如何高效控制结构体字段在json序列化时的可见性。当需要将包含敏感信息的结构体数组转换为json响应时,通过利用`encoding/json`包提供的结构体标签,特别是`json:”-“`,可以轻松实现对特定字段的忽略,从而避免敏感数据泄露,确保api…

    2026年5月10日
    000
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    100
  • 怎么在PHP代码中实现图片上传功能_PHP图片上传功能实现与安全处理教程

    首先创建含enctype的HTML表单,再用PHP接收文件,检查目录、移动临时文件,验证类型与大小,生成唯一文件名,并调整php.ini限制以确保上传成功。 如果您尝试在PHP项目中添加图片上传功能,但服务器无法正确接收或保存文件,则可能是由于表单配置、文件处理逻辑或安全限制的问题。以下是实现该功能…

    2026年5月10日
    100
  • 比特币新手教程 比特币交易平台有哪些

    比特币是一种去中心化的数字货币,基于区块链技术实现点对点交易,具有匿名性、有限发行和不可篡改等特点;新手可通过交易所购买,P2P交易获得比特币,常用平台包括Binance、OKX和Huobi;交易流程包括注册账户、实名认证、绑定支付方式、充值法币并下单购买,可选择市价单或限价单;比特币存储方式有交易…

    2026年5月10日
    000
  • Golang gRPC流式请求异常处理

    在Golang的gRPC流式通信中,必须通过context.Context处理异常。应监听上下文取消或超时,及时释放资源,设置合理超时,避免连接长时间挂起,并在goroutine中通过context控制生命周期。 在使用 Golang 和 gRPC 实现流式通信时,异常处理是确保服务健壮性的关键部分…

    2026年5月10日
    000
  • Go语言mgo查询构建:深入理解bson.M与日期范围查询的正确实践

    本文旨在解决go语言mgo库中构建复杂查询时,特别是涉及嵌套`bson.m`和日期范围筛选的常见错误。我们将深入剖析`bson.m`的类型特性,解释为何直接索引`interface{}`会导致“invalid operation”错误,并提供一种推荐的、结构清晰的代码重构方案,以确保查询条件能够正确…

    2026年5月10日
    100
  • vscode上怎么运行html_vscode上运行html步骤【指南】

    首先保存文件为.html格式,再通过浏览器或Live Server插件打开预览;推荐安装Live Server实现本地服务器运行与实时刷新,提升开发体验。 在 VS Code 上运行 HTML 文件并不需要复杂的配置,只需几个简单步骤即可预览页面效果。VS Code 本身是一个代码编辑器,不直接运行…

    2026年5月10日
    100
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • 修复点击时按钮抖动:CSS垂直对齐实践

    本文探讨了在Web开发中,交互式按钮(如播放/暂停按钮)在点击时发生意外垂直位移的问题。通过分析CSS样式变化对元素布局的影响,我们发现这是由于按钮不同状态下的边框样式和内边距改变,以及默认的垂直对齐行为共同作用所致。核心解决方案是利用CSS的vertical-align属性,将其设置为middle…

    2026年5月10日
    000
  • Golang goroutine与channel调试技巧

    使用go run -race检测数据竞争,结合runtime.NumGoroutine监控协程数量,通过pprof分析阻塞调用栈,利用select超时避免永久阻塞,有效排查goroutine泄漏、死锁和数据竞争问题。 Go语言的goroutine和channel是并发编程的核心,但它们也带来了调试上…

    2026年5月10日
    000
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • 《魔兽世界》将于6月11日开启国服回归技术测试

    《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试《魔兽世界》将于6月11日开启国服回归技术测试

    《%ign%ignore_a_1%re_a_1%》官方宣布,将于6月11日开启国服回归技术测试,时间为7天,并称可以在6月内正式开服,玩家们可以访问官网下载战网客户端并预下载“巫妖王之怒”客户端,技术测试详情见下图。 WordAi WordAI是一个AI驱动的内容重写平台 53 查看详情 以上就是《…

    2026年5月10日 用户投稿
    200
  • 如何在HTML中插入表单元素_HTML表单控件与输入类型使用指南

    HTML表单通过标签构建,包含action和method属性定义数据提交目标与方式,常用input类型如text、password、email等适配不同输入需求,配合label、required、placeholder提升可用性,结合textarea、select、button等控件实现完整交互,是…

    2026年5月10日
    000
  • 前端缓存策略与JavaScript存储管理

    根据数据特性选择合适的存储方式并制定清晰的读写与清理逻辑,能显著提升前端性能;合理运用Cookie、localStorage、sessionStorage、IndexedDB及Cache API,结合缓存策略与定期清理机制,可在保证用户体验的同时避免安全与性能隐患。 前端缓存和JavaScript存…

    2026年5月10日
    100
  • HTML5网页如何实现手势操作 HTML5网页移动端交互的处理技巧

    首先利用原生touch事件实现滑动判断,再通过preventDefault解决滚动冲突,接着引入Hammer.js处理复杂手势,最后通过优化点击区域、避免事件冲突和增加视觉反馈提升体验。 在移动端浏览器中,HTML5网页可以通过触摸事件实现手势操作,提升用户体验。虽然原生JavaScript提供了基…

    2026年5月10日
    000
  • 深入理解 Express.js 中 next() 参数的作用与中间件机制

    本文深入探讨 express.js 中间件函数中的 `next()` 参数。它负责将控制权传递给请求-响应周期中的下一个中间件或路由处理程序。文章将详细解释 `next()` 的工作原理、中间件的注册与执行顺序,以及不正确使用 `next()` 可能导致请求挂起的风险,并通过代码示例和实际应用场景,…

    2026年5月10日
    000
  • 创建指定大小并填充特定数据的Golang文件教程

    本文将介绍如何使用Golang创建一个指定大小的文件,并用特定数据填充它。我们将使用 `os` 包提供的函数来创建和截断文件,从而实现快速生成大文件的目的。示例代码展示了如何创建一个10MB的文件,并将其填充为全零数据。掌握这些方法,可以方便地在例如日志系统或磁盘队列等场景中,预先创建测试文件或初始…

    2026年5月10日
    000

发表回复

登录后才能评论
关注微信