python和pymysql

本文详细介绍了如何使用Python的pymysql库进行数据库操作,包括数据库连接、表的创建、数据的增删改查、事务处理及错误管理等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python和pymysql

安装pyMySQL
pip install pymysql
检查是否安装成功
import pymysql

1、数据库的连接

前提条件:
已经创建testdb
表格employee已经创建
表格字段为first_name,last_name,age,sex,infrom
已经安装pymysql

    import pymysql
        #打开数据库连接
        db = pymysql.connect("localhost", "root", "", "testdb")
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()
        # 使用 execute()  方法执行 SQL 查询
        cursor.execute("SELECT VERSION()")
        # 使用 fetchone() 方法获取单条数据.
        data = cursor.fetchone()
        print("Database version : %s " % data)
        # 关闭数据库连接
        db.close()

2、创建数据库表

execute() 方法可以创建表
    import pymysql
    # 打开数据库连接
    db = pymysql.connect("localhost", "root", "", "testdb")
     # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    # 使用 execute() 方法执行 SQL,如果表存在则删除
    cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
    # 使用预处理语句创建表
    sql = """CREATE TABLE EMPLOYEE (
             FIRST_NAME  CHAR(20) NOT NULL,
             LAST_NAME  CHAR(20),
             AGE INT,  
             SEX CHAR(1),
             INCOME FLOAT )"""
             cursor.execute(sql)
      # 关闭数据库连接
    db.close()

3、数据库中插入数据

import pymysql
    # 打开数据库连接
    db = pymysql.connect("localhost", "root", "", "testdb")
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    # SQL 插入语句
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
             LAST_NAME, AGE, SEX, INCOME)
             VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    try:
        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
    except:
        # 如果发生错误则回滚
        db.rollback()
    # 关闭数据库连接
    db.close()

4、数据库查询操作

fetchone()获取单条数据,获取下一个查询结果集,结果集是一个对象
fetchall()获取多条数据,接收全部的返回结果行
rowcount:是一个只读属性,并返回执行execute()方法后影响的行数
查询employee表中salary字段大于1000对的所有数据

import pymysql
#打开数据库连接
db = pymysql.connect("localhost", "root", "", "TESTDB")
#使用cursor()方法获取操作游标
cursor = db.cursor()
#SQL 查询语句
sql = "SELECT * FROM EMPLOYEE \
       WHERE INCOME > %s" % (1000)
    try:
            # 执行SQL语句
            cursor.execute(sql)
            # 获取所有记录列表
            results = cursor.fetchall()
            for row in results:
                fname = row[0]
                lname = row[1]
                age = row[2]
                sex = row[3]
                income = row[4]
                # 打印结果
                print("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % \
                      (fname, lname, age, sex, income))
        except:
            print("Error: unable to fetch data")
            # 关闭数据库连接
        db.close()

5、数据库的更新操作

将testdb表中的sex为M的age增加1

    import pymysql
    # 打开数据库连接
    db = pymysql.connect("localhost","root","","TESTDB" )
    # SQL 更新语句
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交到数据库执行
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
    # 关闭数据库连接
    db.close()

6、删除操作

删除数据表中的数据
删除age大于20的所有数据

    import pymysql
    # 打开数据库连接
    db = pymysql.connect("localhost","root","","TESTDB" )
    # 使用cursor()方法获取操作游标 
    cursor = db.cursor()
    # SQL 删除语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
    try:
       # 执行SQL语句
       cursor.execute(sql)
       # 提交修改
       db.commit()
    except:
       # 发生错误时回滚
       db.rollback()
    # 关闭连接
    db.close()

7、执行事务

事务机制可以确保数据的一致性
事务应该具有四个属性:原子性、一致性、隔离性、持久性 四个属性通常称为ACID特性
原子性:一个事务时一个不可分割的工作单位,事务中包括的诸多操作,要不都做,要不就都不做
一致性:事务必须是使数据库从一个一致性状态到另一个一致性状态,一致性与原子性是密切相关的
隔离性:一个事务的执行不能被其他事物干扰。就是一个事务内部操作及使用的数据对兵法的其他事物是隔离的,并发执行的各个事务之间不能互相干扰
持久性:持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响

 #SQL删除记录语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
   #执行SQL语句
   cursor.execute(sql)
   #向数据库提交
   db.commit()
except:
   #发生错误时回滚
   db.rollback()
commit()

所有更新操作,rollback()方法回滚当前游标的所有操作

8、错误处理

Warning 当有严重警告时触发
Error 警告以外所有其他错误类。必须是 StandardError 的子类。
InterfaceError 当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。
DatabaseError 和数据库有关的错误发生时触发。 必须是Error的子类。
DataError 当有数据处理时的错误发生时触发
OperationalError 指非用户控制的,而是操作数据库时发生的错误
IntegrityError 完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。
InternalError 数据库的内部错误
ProgrammingError 程序错误
NotSupportedError 不支持错误,指使用了数据库不支持的函数或API等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值