百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

四十五、Python操作MySQL数据库(四十五、python操作mysql数据库手册)

off999 2024-10-12 06:14 66 浏览 0 评论


1.什么是pymysql?

PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中使用mysqldb。PyMySql遵循Python数据库API v2.0的规范,并包含了pure-Python MySQL客户端库。

2.安装PyMySQL

 $ pip install pymysql

3.MySQL数据库安装与配置

在用PyMySQL连接MySQL数据库之前,请确保MySQL数据库安装配置完成,具体如何安装与配置MySQL数据库,请参考另一篇文章。

二十四、CentOS7安装配置MySQL

4. 数据库连接与操作

4.1.连接数据库操作

import pymysql

# 数据库服务器名
HOSTNAME = 'node05'
# 数据库用户名
USER = 'root'
# 数据库名
DATABASE = 'cayman'
# 数据库密码
PASSWORD = 'Love88me'

# 打开数据库连接
conn = pymysql.connect(HOSTNAME, USER, PASSWORD, DATABASE)

# 使用cursor()方法创建一个游标对象
cursor = conn.cursor()

# 使用execute()方法执行SQL查询语句
cursor.execute("select VERSION()")

# 使用fetchone()查询单条数据
data = cursor.fetchone()
print(f"Database Version: {data}")

# 关闭数据库连接
conn.close()

4.2.创建表操作

import pymysql

# 设置数据库配置项
HOSTNAME = 'node05'
USERNAME = 'root'
PASSWORD = 'Love88me'
DATABASE = 'cayman'

# 打开数据库连接
db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE)

# 使用cursor对象创建一个流标对象
cursor = db.cursor()

# 使用execute()方法执行SQL, 如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS employee")

# 使用预处理语句创建表
sql = """ CREATE TABLE employee(
    id bigint primary key auto_increment,
    user_name varchar(50) not null,
    age int,
    sex char(1),
    income float
)
"""

# 执行sql语句
cursor.execute(sql)

# 关闭数据库连接
db.close()

4.3.数据库插入操作

4.3.1.插入单条语句

import pymysql

# 设置数据库配置项
HOSTNAME = 'node05'
USERNAME = 'root'
PASSWORD = 'Love88me'
DATABASE = 'cayman'

# 打开数据库连接
db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE)

# 使用cursor对象创建一个流标对象
cursor = db.cursor()

# SQL语句
sql = """
 insert into employee(user_name, age, sex, income) values ('风清扬', 64, '男', 22000);
"""

try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交
    db.commit()
except:
    # 如果发生错误就回滚
    db.rollback()

# 关闭数据库连接
db.close()

4.3.2.插入多条语句

import pymysql

# 设置数据库配置项
HOSTNAME = 'node05'
USERNAME = 'root'
PASSWORD = 'Love88me'
DATABASE = 'cayman'

# 打开数据库连接
db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE)

# 使用cursor对象创建一个流标对象
cursor = db.cursor()

# SQL语句
sql = " insert into employee(user_name, age, sex, income) values (%s, %s, %s, %s)"

data = (
    ('风清扬', 64, '男', 22000),
    ('令狐冲', 22, '男', 14000),
    ('任盈盈', 20, '男', 10000),
    ('东方不败', 32, '男', 18000),
    ('任我行', 56, '男', 17000),
    ('段誉', 33, '男', 19000),
    ('王语嫣', 26, '女', 9000),
    ('木婉清', 23, '女', 6000),
    ('乔峰', 38, '男', 23000),
    ('阿朱', 24, '女', 5000),
    ('阿紫', 22, '女', 5500),
    ('虚竹', 35, '男', 11000),
    ('梦姑', 25, '女', 6500),
    ('梅超风', 41, '女', 15000),
    ('陈玄风', 44, '男', 12000),
    ('杨过', 28, '男', 24000),
    ('小龙女', 38, '女', 15000),
    ('鸠摩智', 44, '男', 16000)
)

try:
    # 执行sql语句
    cursor.executemany(sql, data)
    # 提交
    db.commit()
except:
    # 如果发生错误就回滚
    db.rollback()

# 关闭数据库连接
db.close()

4.4.数据库查询

Python查询MySQL使用fetchone()获取单条数据,使用fetchall()方法获取多条数据。

  • fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
  • fetchall(): 接收全部的返回结果行;
  • rowcount(): 这是一个只读属性,并返回执行execute()方法后影响的行数。
  • 4.4.1.查询示例

    查询employee表中income(工资)大于20000的所有数据

    # 1.查询employee表中工资大于20000的员工信息
    import pymysql
    
    # 设置数据库配置项
    HOSTNAME = 'node05'
    USERNAME = 'root'
    PASSWORD = 'Love88me'
    DATABASE = 'cayman'
    
    # 打开数据库连接
    db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE)
    
    # 使用cursor对象创建一个流标对象
    cursor = db.cursor()
    
    # 查询语句
    sql = "select * from employee where income >'%d' "%(20000)
    
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 获取所有满足条件的列表
        ret = cursor.fetchall()
        # 遍历打印结果
        for row in ret:
            user_name = row[1]
            age = row[2]
            sex = row[3]
            income = row[4]
            print(f"员工: {user_name},年龄: {age}, 性别: {sex}, 工资: {income}")
    except:
        print("无满足条件的数据或查询出错!!")
    
    # 关闭数据库连接
    db.close()

    4.5.数据库更新操作

    import pymysql
    
    # 设置数据库配置项
    HOSTNAME = 'node05'
    USERNAME = 'root'
    PASSWORD = 'Love88me'
    DATABASE = 'cayman'
    
    # 打开数据库连接
    db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE)
    
    # 使用cursor对象创建一个流标对象
    cursor = db.cursor()
    
    # 更新语句
    sql = "update employee set income=income+income*0.1 where sex='%c'"%('女')
    
    try:
        # 执行SQL语句
        cursor.execute(sql)
        # 提交
        db.commit()
    
    except:
        # 发生错误时回滚
        db.rollback()
    
    # 关闭数据库
    db.close()

    4.6.删除操作

    import pymysql
    
    # 设置数据库连接信息
    HOSTNAME = 'node05'
    USERNAME = 'root'
    PASSWORD = 'Love88me'
    DATABASE = 'cayman'
    
    # 打开数据库连接
    db = pymysql.connect(HOSTNAME, USERNAME, PASSWORD, DATABASE)
    
    # 使用cursor()方法获取游标
    cursor = db.cursor()
    
    # 构建删除数据SQL语句
    sql = "delete from employee where user_name = '%s'"%('鸠摩智')
    
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交
        db.commit()
    
    except:
        # 发生异常时回滚
        db.rollback()
    
    # 关闭数据库连接
    db.close()

    4.7 执行事务操作

    在数据库操作中,事务机制可以保证数据的一致性。最基本的事务应当具备4个属性: 原子性、一致性、隔离性、和持久性。这四个属性被称作ACID特性。

  • 原子性(Atomicity): 一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
  • 一致性(Consistency): 事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
  • 隔离性(Isolation): 一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
  • 持久性(Durability): 持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
  • Python DB API 2.0的事务提供了两个方法commit和rollback。对于支持事务的数据库编程中,当流标建立时,就自动开启了一个隐形的数据库事务。


    4.8 错误处理

    DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常:

    相关推荐

    腾达路由器手机端登录入口(腾达路由器手机端登录入口在哪)

    腾达路由器使用192.168.0.1或tendawifi.com作为登录地址。登录管理员页面的步骤:1、手机连接到腾达路由器的wifi信号;2、在手机上打开浏览器,在地址栏输入192.168.0.1后...

    百度网盘app下载安装手机版(百度网盘app安卓版)
    百度网盘app下载安装手机版(百度网盘app安卓版)

    百度网盘没有关闭离线下载功能,可以通过以下方法进行离线下载:1、打开手机,找到手机中的百度网盘:2、打开百度网盘,找到右下角的“我的”,找到屏幕中的“离线下载”:3、点击打开离线下载,选择“新建链接任务”,然后点击“确定”:4、在新建链接页...

    2025-12-21 03:51 off999

    自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
    • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
    • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
    • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
    • 自己配台式电脑怎么配(自己配台式电脑怎么配显卡)
    安卓虚拟机破解版(挽念虚拟机15.0破解版)

    正盗版都是广联达公司内部出来的,破解の用来打市场,正版的用来获取利润,个人破不了1、确保你的虚拟机网路设置正确。2、如果采用的是独立无线网卡那么要确保独立网卡能被虚拟机识别,虚拟机安装了独立无线网卡...

    win7系统改中文(win7系统换中文)

    要将Windows7系统从英文切换为中文,可以按照以下步骤进行:1.打开控制面板:点击Windows开始菜单,选择“控制面板”。2.打开区域和语言设置:在控制面板中,找到“时钟、语言和区域”或“...

    win10启动盘怎么制作(windows10如何制作启动盘)

    要制作Win10PE启动盘,首先需要下载Win10PE镜像文件。然后,使用专业的制作工具(如Rufus或WinToUSB)将镜像文件写入U盘或DVD。接下来,将U盘或DVD插入需要启动的计算机,并在B...

    磁盘分区win7(磁盘分区win r)

    1操作分区比较简单,但需要严格按照步骤进行,否则可能会导致数据丢失或无法启动等问题。2首先要进入磁盘管理界面,找到新安装的硬盘,右键选择“新建简单卷”,按照步骤设置分区大小、驱动器号、文件系统等。...

    win10专业版永久激活工具免费
    • win10专业版永久激活工具免费
    • win10专业版永久激活工具免费
    • win10专业版永久激活工具免费
    • win10专业版永久激活工具免费
    cad2007破解版安装序列号(cad破解版的序列号)

    1安装过程中可能会出现一些常见错误。例如,安装程序无法启动、安装程序突然中止或无法完成、安装后无法启动CAD等。2这些错误的原因可能是由于系统环境不符合要求,或者是由于安装程序本身出现问题。3为...

    windows7旗舰版安装密钥(win7安装密钥和激活密钥)

    一、在线获取激活密钥1、访问官方网站:打开浏览器,访问微软官方网站。2、注册账号:如果没有微软账号,需要先注册一个账号。3、登录账号:使用注册的账号登录微软官方网站。4、获取密钥:在官方网站上找到wi...

    vmware下载哪个版本(vmware各版本下载)

    vmos能运行原神。VMOS(虚拟大师)是一款以VirtualMachine(简称VM,即虚拟机)技术为主的APP(安卓应用软件)。通过VM技术,把开源的安卓系统(支持任意版本),无需root,以普...

    在哪下载win7系统比较可靠(去哪下载win7)

    靠谱,系统之家的系统装好后不需要激活,也不要钱。只是系统之家的所有东西,系统也好,软件也好。都有强有力的写在系统底层的顽固病毒,只要碰过系统之家就永远杀不干净。当然了,永远关不掉的广告弹窗也是基本操作...

    一般家庭宽带用多少兆为最佳

    这个要根据实际情况来确定,一般情况下,家庭宽带有50兆、100兆及200兆。如果是三口之家,平时也就看看电视,或刷刷手机,50兆的就够了。如果人口多,面积为四室二厅的房子,同时有人看电视有人玩游戏,有...

    电脑配置太高装不了win7(电脑配置太高装不了win7怎么办)

    如果是这样,那就不要安装Win7了,安装Win10即可。原因如下:1、win10系统是一个大势所趋。新的事物,你必须要接触、要熟悉,虽然目前还可以暂时回避,但是几年后呢,win7必然会像xp一样退出历...

    移动硬盘读取不出来(移动硬盘读取不出来了,怎么拿数据)

    1、移动硬盘插入电脑,选择计算机,选择左侧“此电脑”,点击右击。2、选择“管理”点击,进入计算机管理;选择磁盘“磁盘管理”。3、如没有看到移动硬盘,可以选择右边的更多操作,重新扫描磁盘。4、如依然没有...

    取消回复欢迎 发表评论: