使用Python操作MySql数据库(基础)

目录

引言

1. 安装pymysql库

2. 连接MySql数据库

3. 无数据更改的操作

3.1 创建数据库

3.2 创建表

3.3  查询表

4. 有数据更改的操作(增删改)


引言

        本篇文章介绍了如何使用Python对MySql数据库进行基础操作,具体包括创建数据库、创建表、表的增删查改等。

        本文使用的MySql数据库可视化工具是DBeaver(你也可以使用其他的可视化工具,或者不使用),具体配置可参考我的另一篇文章(还没写完,可以先看看其他大佬写的)

        本文适用于熟悉基础的SQL语句和会使用MySql数据库的读者,对于这些知识,这篇文章不进行介绍。

        本文介绍的连接MySql使用的第三方Python库是pymysql,当然你也可以选择其他的第三方库。

1. 安装pymysql库

        首先在终端执行下面的pip命令下载pymysql库:

pip install pymysql

         当看到Successfully installed时表示安装成功。

2. 连接MySql数据库

         连接MySql使用的是pymysql中的Connection对象,他有下面几个常用的参数:

conn = Connection(

    host = 'localhost',               # 主机名(或IP地址)

    port = 3306,                       # 端口号,默认的mysql都是3306

    user = 'root',                      # 用户名

    password = 'XXXXX',       # 对应用户的密码

    database = 'XXXX',          # 连接的数据库名称

    autocommit = True,         # 是否自动提交

    charset = 'utf8'                # 编码码格式

)        

        接下来会一一讨论这些参数的作用。

        运行下面的代码(具体参数需要根据自己的mysql进行更改):

from pymysql import Connection

conn = Connection(
    host = 'localhost',        # 主机名(或IP地址)
    port = 3306,               # 端口号,默认的mysql都是3306
    user = 'root',             # 用户名
    password = '123456',       # 对应用户的密码
)

# 获取mysql版本信息 (测试连接是否成功)
print(conn.get_server_info())    

conn.close()    # 关闭连接

        运行完成后终端显示8.0.38(MySql版本号,与你下载的MySql版本有关),表示成功连接上MySql:

        (ps: 如果连接失败,无法进行下面的操作,可以参考我的另一篇文章,下载和配置MySql数据库)

3. 无数据更改的操作

3.1 创建数据库

        代码如下:

from pymysql import Connection

conn = Connection(
    host = 'localhost',        # 主机名(或IP地址)
    port = 3306,               # 端口号,默认的mysql都是3306
    user = 'root',             # 用户名
    password = '123456',       # 对应用户的密码
)


cursor = conn.cursor()      # 获取游标对象
cursor.execute("create database test_database")   # 创建数据库
cursor.close()      # 关闭游标
conn.close()    # 关闭连接

        结果如下,成功创建了一个名为"test_database"的数据库:

3.2 创建表

        在创建表之前要选择要操作的数据库,使用select_db()函数,参数为数据库的名称,如下:

from pymysql import Connection

conn = Connection(
    host = 'localhost',        # 主机名(或IP地址)
    port = 3306,               # 端口号,默认的mysql都是3306
    user = 'root',             # 用户名
    password = '123456',       # 对应用户的密码
)

cursor = conn.cursor()      # 获取游标对象
conn.select_db("test_database")     # 选择数据库
cursor.execute("create table test (id INT, name VARCHAR(10))")   # 创建表

cursor.close()      # 关闭游标
conn.close()    # 关闭连接

        使用游标进行数据库操作的主要原因包括:

  • 管理数据库连接和执行SQL语句。
  • 方便地迭代和处理结果集。
  • 支持执行多种类型的SQL语句。
  • 提供参数化查询,防止SQL注入攻击。
  • 更好地管理事务,确保操作的原子性和一致性。

        (看不懂没关系,用就完了)

        执行完成后,可以看到数据库test_database中新建了一个test表:

3.3  查询表

        我在另一个名为world的数据库中准备了一个表student,内容如下:

        在python中执行以下代码进行查询:

from pymysql import Connection

conn = Connection(
    host = 'localhost',        # 主机名(或IP地址)
    port = 3306,               # 端口号,默认的mysql都是3306
    user = 'root',             # 用户名
    password = '123456',       # 对应用户的密码
)


# 查询
cursor = conn.cursor()      # 获取游标对象
conn.select_db("world")     # 选择数据库
cursor.execute("select * from student")   # 查询语句

result = cursor.fetchall()   # 获取查询结果
print(result)

cursor.close()      # 关闭游标
conn.close()        #关闭连接

        在终端得到以下内容:

        由此看来,对于查询的数据是以元组的类型返回的。

4. 有数据更改的操作(增删改)

pymysql在执行数据插入或其它产生数据更改的SQL语句时,默认是需要提交更改的,即需要通过代码“确认”这种更改行为。具体通过commit()函数进行操作。

与无数据更改的操作不同的除了SQL语句外就是使用了commit()函数,用来提交插入实务(可以理解为提交结果给数据库),具体操作如下。

        对表有数据更改的基本操作包括:增、删、改,这三个操作原理都相同,只需将execute()函数中的语句更改为相应的SQL语句即可,这里以insert语句为例:

        (ps:不使用commit()语句是无法完成对表操作的,但程序会正常执行,只是表中的数据不会变,可以自行尝试)

from pymysql import Connection

conn = Connection(
    host = 'localhost',        # 主机名(或IP地址)
    port = 3306,               # 端口号,默认的mysql都是3306
    user = 'root',             # 用户名
    password = '123456',       # 对应用户的密码
)

# 插入
cursor = conn.cursor()              # 获取游标对象
conn.select_db("test_database")     # 选择数据库

# 插入语句
cursor.execute("insert into test values (1, '张三'), (2, '李四'), (3, '王五')")   
conn.commit()   # 提交事务

cursor.close()      # 关闭游标
conn.close()        # 关闭连接

        结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值