【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: 【100天精通python】Day32:使用python操作数据库_MySQL下载、安装、配置、使用实战

专栏导读

专栏订阅地址:https://blog.csdn.net/qq_35831906/category_12375510.html

1 MySQL概述

      MySQL是一款互联网上广泛使用的开源关系型数据库管理系统。它最初由瑞典的MySQL AB公司开发,并于1995年首次发布。如今,MySQL由Oracle公司维护和支持。

MySQL具有很多优点,包括:

1. 开源:MySQL是开源软件,任何人都可以自由地获取、使用和修改它。

2. 跨平台性:MySQL可以在多个操作系统上运行,包括Windows、Linux、macOS等。

3. 灵活性:MySQL可以与许多编程语言集成,如PHP、Java、Python等,使其成为开发Web应用程序的理想选择。

4. 高性能:MySQL被设计为处理大规模数据和高并发请求,具有快速的响应能力和高效的查询引擎。

5. 可扩展性:MySQL可以根据需要进行水平和垂直扩展,以支持更大的数据量和更高的负载。

6. 数据完整性:MySQL支持事务处理,保证数据在并发操作中的一致性和完整性。

       除了以上特点,MySQL还拥有丰富的功能和工具,如索引优化、复制、备份和恢复机制,以及兼容性强的SQL语言等。

       因为其易于使用、稳定可靠的特性,加上开源的免费许可证,MySQL在Web开发和数据存储方面成为了一种流行的数据库解决方案。

2 MySQL下载安装

2.1 下载

打开链接:MySQL :: Download MySQL Community Server

如下:

选择MSI Installer :

如下,选择No thanks,just start my download。选择指定文件夹存放即可

2.2 安装

下载完毕后,右键选择安装,如下

点击Next:


选Next——>Typical ——>Install:


选择Typical:

等待安装:

安装完成:

2.3 配置
2.3.1 服务类型和网络配置:

安装点击Finish,进入配置如下:

点击Next——>

如上图,点击Config Type的下拉框,显示有三种类型:

  • Development Computer:开发机器,MySQL会占用最少量的内存。
  • Server Computer:服务器机器,几个服务器应用会运行在机器上,适用于作为网站或应用的数据库服务器,会占用中等内存。
  • Dedicated Computer:专用机器,机器专门用来运行MySQL数据库服务器,会占用机器的所有可用内存。
  •        根据自己的用途选择相应的类型配置,我这里为了后面做高并发性能测试便选择“Server Machine”类型。
2.3.2 连接配置:

选择好配置类型后进行连接配置,如下图:

        常用的是TCP/IP连接,勾选该选项框,默认端口号是3306,可在输入框中更改。若数据库只在本机使用,可勾选“Open Firewall port for network access”来打开防火墙,若需要远程调用则不要勾选。

       下面的“Named Pipe”和“Shared Memory”是进程间通信机制,一般不勾选。

       “Show Advanced Options”用于在后续步骤配置高级选项,为尽可能多的了解MySQL的可配置项,这里勾选该选项框。

2.3.3 账户和权限配置:

点击next进入账户配置如下:

root账户拥有数据库的所有权限,在密码框输入自己设置的密码。数据库在开发和维护过程中为了安全性和便于管理会为不同的用户授予相应操作权限的账户密码。

点击“Add User”按钮,在弹出的会话框中设置不同权限等级的账户,如下图所示:

Host表示能连接到该数据库的主机地址,可设置为本地(localhost/127.0.0.1)、一个外部IP(如218.17.224.228)、一个外部网段(如218.17.224.*)或者所有主机(%)。

Role表示该账户的角色,可选择的角色如上,根据需要自行选择。设定密码,点击OK即可。

 可增加删除编辑相关用户。

2.3.4 配置Windows Service :

点击next——>进入windows service

将MySQL服务配置成Windows服务后,MySQL服务会自动随着Windows操作系统的启动而启动,随着操作系统的停止而停止,这也是MySQL官方文档建议的配置。

Windows service Name可设置为默认值,只要与其它服务不同名即可。在Windows系统中基于安全需求,MySQL服务需要在一个给定的账户下运行,选择默认的Standard System Account即可。保持默认配置后点击“next”。

2.3.5 服务器文件权限配置:

权限配置:  如下:

2.3.6 创建数据集示例

如下:选择create world database,

点击next:

进入到这一步骤后点击“Execute”执行配置项,如下图

 点击next,出现如下界面,安装成功,点击Finish。

3 python 中使用MySQL

       由于MySQL 服务器以独立的进程运行, 并通过网络对外服务,故需要支持python的MySQL驱动来连接到MySQL服务器。

       在Python中,有几个常用的第三方库可以用来支持与MySQL数据库的交互和操作。以下是一些主要的支持MySQL的数据库模块:

  1. mysql-connector-python:这是 MySQL 官方提供的 Python 连接库,支持 MySQL 服务器的连接、查询和数据操作。
  2. pymysql:是一个纯 Python 实现的 MySQL 客户端库,与 MySQL 交互时性能较好。
  3. PyMySQL:也是一个支持 MySQL 的库,与 mysql-connector-python 类似,但是它是用纯 Python 编写的。
  4. SQLAlchemy:虽然主要用于 ORM(对象关系映射),但也支持连接 MySQL 数据库,并提供了更高级的查询和操作功能。
  5. MySQLdb:这是 Python 2.x 时代流行的 MySQL 客户端库,虽然已经不再维护,但在一些遗留项目中仍然可能会用到。

       以上这些库都有不同的特点和用法,你可以根据你的项目需求和个人喜好选择合适的库。通常来说,mysql-connector-python 和 pymysql 是在 Python 3 中最常用的两个库。使用这些库,你可以轻松地在 Python 中连接、操作和管理 MySQL 数据库。 以下选择PyMySQL进行使用说明。

3.1 安装PyMySQL

       要安装 PyMySQL 库,你可以使用 Python 的包管理工具 pip

       以下是安装 PyMySQL 的步骤:

  1. 打开终端或命令行窗口。
  2. 运行以下命令来安装 PyMySQL:
pip install pymysql

等待安装完成,你会看到一些输出显示安装的进度和状态。

安装完成后,你可以在 Python 脚本中导入 PyMySQL 进行使用:  

       这样,你就成功安装了 PyMySQL 库,可以在你的 Python 程序中使用它来连接和操作 MySQL 数据库。请注意,确保你的计算机上已经安装了 Python 和 pip,并且你有足够的权限来进行安装。

       如果你使用的是虚拟环境,请在虚拟环境中执行上述步骤。

       安装完成后,你可以按照之前的示例来使用 PyMySQL 连接和操作 MySQL 数据库。

3.2  连接数据库

       使用数据库的第一步是连接数据库。以下介绍如何使用PyMySQL连接数据库。

        使用 PyMySQL 连接数据库非常简单,下面是一个基本的示例,展示了如何连接到 MySQL 数据库并执行一些简单的操作:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "username",
    "password": "password",
    "database": "mydb"
}
# 连接到数据库
conn = pymysql.connect(**db_config)
# 创建游标对象
cursor = conn.cursor()
# 执行查询语句
query = "SELECT * FROM users"
cursor.execute(query)
# 获取查询结果
rows = cursor.fetchall()
for row in rows:
    print(row)
# 关闭游标和连接
cursor.close()
conn.close()

       在这个示例中,我们首先配置了连接到数据库的参数,然后使用 pymysql.connect() 函数来创建连接对象 conn。接着,我们使用 conn.cursor() 创建游标对象 cursor,然后执行查询语句,获取查询结果并输出。

       这只是一个简单的连接和查询示例。根据你的需求,你可以使用 cursor.execute() 执行其他 SQL 语句,例如插入、更新、删除等操作。不过,在实际应用中,请务必进行错误处理,确保连接和游标正确关闭,并且遵循最佳实践以保障数据库操作的安全性和性能。

3.3 创建数据表

       在 PyMySQL 中,你可以使用执行 SQL 语句的方式来为数据库创建数据表。下面是一个示例,展示了如何使用 PyMySQL 创建一个名为 "users" 的数据表:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "username",
    "password": "password",
    "database": "mydb"
}
# 连接到数据库
conn = pymysql.connect(**db_config)
# 创建游标对象
cursor = conn.cursor()
# 创建数据表
create_table_query = """
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL
)
"""
cursor.execute(create_table_query)
# 提交创建表的操作
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()

在这个示例中,我们使用 pymysql.connect() 函数连接到数据库,然后使用 conn.cursor() 创建游标对象。接着,我们使用 cursor.execute() 执行 SQL 语句来创建名为 "users" 的数据表。表的结构在 CREATE TABLE 语句中定义,其中包括列的名称、数据类型和约束。最后,我们使用 conn.commit() 提交创建表的操作,并关闭游标和连接。

请注意,这只是一个示例。在实际应用中,你可能需要更多的列和更复杂的结构。确保你了解数据库的设计原则和约定,以创建适合你的应用的数据表

3.4 操作MySQL数据表

当你连接到 MySQL 数据库后,可以执行多种操作来管理数据表。以下是一些常见的操作示例,包括插入、查询、更新和删除数据表中的数据。

3.4.1 插入数据:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "username",
    "password": "password",
    "database": "mydb"
}
# 连接到数据库
conn = pymysql.connect(**db_config)
# 创建游标对象
cursor = conn.cursor()
# 插入数据
insert_query = "INSERT INTO users (username, email) VALUES (%s, %s)"
values = ("alice", "[email protected]")
cursor.execute(insert_query, values)
# 提交插入数据的操作
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()

3.4.2 查询数据:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "username",
    "password": "password",
    "database": "mydb"
}
# 连接到数据库
conn = pymysql.connect(**db_config)
# 创建游标对象
cursor = conn.cursor()
# 查询数据
select_query = "SELECT * FROM users"
cursor.execute(select_query)
# 获取查询结果
rows = cursor.fetchall()
for row in rows:
    print(row)
# 关闭游标和连接
cursor.close()
conn.close()

3.4.3 更新数据:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "username",
    "password": "password",
    "database": "mydb"
}
# 连接到数据库
conn = pymysql.connect(**db_config)
# 创建游标对象
cursor = conn.cursor()
# 更新数据
update_query = "UPDATE users SET email = %s WHERE username = %s"
new_email = "[email protected]"
username = "alice"
cursor.execute(update_query, (new_email, username))
# 提交更新数据的操作
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()

3.4.4 删除数据:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "username",
    "password": "password",
    "database": "mydb"
}
# 连接到数据库
conn = pymysql.connect(**db_config)
# 创建游标对象
cursor = conn.cursor()
# 删除数据
delete_query = "DELETE FROM users WHERE username = %s"
username = "alice"
cursor.execute(delete_query, (username,))
# 提交删除数据的操作
conn.commit()
# 关闭游标和连接
cursor.close()
conn.close()

       这些示例展示了如何使用 PyMySQL 执行插入、查询、更新和删除数据表中的数据。请注意,在实际应用中,务必进行错误处理,确保连接和游标正确关闭,并遵循最佳实践以保障数据库操作的安全性和性能。

4 MySQL使用实战

       创建一个数据库,然后在该数据库中创建 "books" 表,获取指定数据表中的信息,打印MySQL中books表图书的名称和价格。

以下是一个示例,展示了如何使用 PyMySQL 创建数据库、创建表,以及插入和查询数据:

import pymysql
# 配置数据库连接参数
db_config = {
    "host": "localhost",
    "user": "aaaa",  #your_username
    "password": "lucky"  #your_password
}
def create_database_and_table(cursor):
    # 创建数据库
    cursor.execute("CREATE DATABASE IF NOT EXISTS mydb")
    cursor.execute("USE mydb")
    # 创建数据表
    create_table_query = """
    CREATE TABLE IF NOT EXISTS books (
        id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(255) NOT NULL,
        price DECIMAL(10, 2) NOT NULL
    )
    """
    cursor.execute(create_table_query)
def insert_sample_data(cursor):
    # 插入示例数据
    insert_query = "INSERT INTO books (name, price) VALUES (%s, %s)"
    values = [("Book A", 19.99), ("Book B", 29.99), ("Book C", 9.99)]
    cursor.executemany(insert_query, values)
def print_books_info(cursor):
    # 查询图书名称和价格
    select_query = "SELECT name, price FROM books"
    cursor.execute(select_query)
    # 获取查询结果
    rows = cursor.fetchall()
    # 打印图书名称和价格
    for row in rows:
        book_name, book_price = row
        print(f"Book Name: {book_name}, Price: {book_price}")
def main():
    # 连接到数据库
    conn = pymysql.connect(**db_config)
    # 创建游标对象
    cursor = conn.cursor()
    try:
        # 创建数据库和数据表
        create_database_and_table(cursor)
        # 插入示例数据
        insert_sample_data(cursor)
        conn.commit()
        # 打印图书信息
        print_books_info(cursor)
    finally:
        # 关闭游标和连接
        cursor.close()
        conn.close()
if __name__ == "__main__":
    main()

       在这个示例中,我们首先创建了一个数据库 "mydb",然后在该数据库中创建了 "books" 表。确保你将 "your_username" 和 "your_password" 替换为实际的数据库用户名和密码。在运行代码之前,请确保你已经安装了 PyMySQL 库(通过 pip install pymysql)。  

输出如下:

运行以上代码,若出现错误

RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password au

表明你的 Python 环境缺少 cryptography 包,而这个包是用于支持 MySQL 数据库的 sha256_passwordcaching_sha2_password 身份验证方法的。要解决这个问题,你可以按照以下步骤来安装 cryptography 包:

  1. 打开终端或命令行窗口。
  2. 运行以下命令来安装 cryptography 包:
pip install cryptography
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
2月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
409 7
|
2月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
288 0
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
851 152
|
3月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
490 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
3月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
3月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
3月前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
3月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
363 0
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。