python笔记——pymysql连接数据库

下面就来介绍python使用pymysql库连接数据库

安装pymysql

pip install pymysql

首先第一步是连接数据库驱动,有了驱动后就可以对数据库进行增删改查,其中增删改操作的时候需要手动提交commint(),否则代码失效,当然pymysql也可以设置自动提交!

连接数据库驱动

下面的autocommit参数可以不写,不写的话增删改就要自己手动提交

# 连接数据库驱动
def getDrive():
    db = pymysql.connect(
        host ='127.0.0.1',          # 主机名
        user = 'root',              # 用户名
        password = '你的密码',          # 密码
        database = '数据库名',    		# 数据库
        autocommit = True           # 自动commit提交
    )
    return db

查询语句

import pymysql


# 连接数据库驱动
def getDrive():
    db = pymysql.connect(
        host ='127.0.0.1',          # 主机名
        user = 'root',              # 用户名
        password = '你的密码',          # 密码
        database = 'demo',           # 数据库
        autocommit = True           # 自动commit提交
    )
    return db


def selectDb():
    # 获得数据库驱动
    db = getDrive()
    # 创建游标对象
    cursor = db.cursor()

    sql = "select * from `test`"
    res = ''
    count = ''
    try:
        count = cursor.execute(sql) # 查询的条数
        data = cursor.fetchall()    # 查询到的数据,以元组或元组嵌套形式返回的

        # 没开自动提交commint,增删改操作需要添加下面操作
        # db.commit() 
        print("数据查询成功")

    except Exception as e:
        db.rollback() # 若出现失败,进行回滚
        print("数据查询失败")
        print(e)

    finally:
        cursor.close()
        db.close()
        res = {
            'count':count,
            'data':data
        }
        return res

if __name__ == "__main__":
    
    res = selectDb()
    for re in res['data']:
        print(re)
    

下面介绍几个函数的含义

  • fetchone(): 获取第一条数据
  • fetchone(): 获取前几条数据
  • fetchall(): 获取全部数据

添加语句

添加数据有单条添加也有批量添加

单条添加 execute()

import pymysql


# 连接数据库驱动
def getDrive():
    db = pymysql.connect(
        host ='127.0.0.1',          # 主机名
        user = 'root',              # 用户名
        password = '你的密码',          # 密码
        database = 'demo',           # 数据库
        autocommit = True           # 自动commit提交
    )
    return db

def insertDb():
    # 获得数据库驱动
    db = getDrive()
    # 创建游标对象
    cursor = db.cursor()
    # 这里需要注意表和字段的引号不是单引号,用单引号会报错!!!
    sql = "INSERT INTO `test` ( `username`, `password`) VALUES ('wangwu','123')"
    try:
        re = cursor.execute(sql)

        # 没开自动提交commint,增删改操作需要添加下面操作
        # db.commit()
        print(re)
        print("数据添加成功")

    except Exception as e:
        db.rollback() # 若出现失败,进行回滚
        print("数据添加失败")
        print(e)

    finally:
        cursor.close()
        db.close()


if __name__ == "__main__":
    
    res = insertDb()
    

批量添加 executemany()

其中executemany()第二个参数可以是列表或者元组

import pymysql

# 连接数据库驱动
def getDrive():
    db = pymysql.connect(
        host ='127.0.0.1',          # 主机名
        user = 'root',              # 用户名
        password = '你的密码',          # 密码
        database = 'demo',           # 数据库
        autocommit = True           # 自动commit提交
    )
    return db

def insertDb():
    # 获得数据库驱动
    db = getDrive()
    # 创建游标对象
    cursor = db.cursor()

    lists = [
        ['lisi','123'],
        ['wangwu','123']
    ]
   
    sql = "INSERT INTO `test` ( `username`, `password`) VALUES (%s,%s)"
    try:
        re = cursor.executemany(sql,lists)

        # 没开自动提交commint,增删改操作需要添加下面操作
        # db.commit()
        print(re)
        print("数据添加成功")

    except Exception as e:
        db.rollback() # 若出现失败,进行回滚
        print("数据添加失败")
        print(e)

    finally:
        cursor.close()
        db.close()

if __name__ == "__main__":
    
    res = insertDb()
    

更新语句

import pymysql

# 连接数据库驱动
def getDrive():
    db = pymysql.connect(
        host ='127.0.0.1',          # 主机名
        user = 'root',              # 用户名
        password = '你的密码',          # 密码
        database = 'demo',           # 数据库
        autocommit = True           # 自动commit提交
    )
    return db
    
def updateDb():
    # 获得数据库驱动
    db = getDrive()
    # 创建游标对象
    cursor = db.cursor()

    table = 'test'
    id = '1'
    password = '123456'
    sql = "UPDATE %s SET password = '%s' WHERE id = '%s'" % (table, password, id)
    try:
        re = cursor.execute(sql)

        # 没开自动提交commint,增删改操作需要添加下面操作
        # db.commit()
        print(re)
        print("更新数据成功")

    except Exception as e:
        db.rollback() # 若出现失败,进行回滚
        print("更新数据失败")
        print(e)

    finally:
        cursor.close()
        db.close()

if __name__ == "__main__":
    
    res = updateDb()
    

删除语句

import pymysql

# 连接数据库驱动
def getDrive():
    db = pymysql.connect(
        host ='127.0.0.1',          # 主机名
        user = 'root',              # 用户名
        password = '你的密码',          # 密码
        database = 'demo',           # 数据库
        autocommit = True           # 自动commit提交
    )
    return db

def deleteDb():
    # 获得数据库驱动
    db = getDrive()
    # 创建游标对象
    cursor = db.cursor()

   
    sql = "DELETE FROM `test` WHERE `id` = 7"
    try:
        re = cursor.execute(sql)

        # 没开自动提交commint,增删改操作需要添加下面操作
        # db.commit()
        print(re)
        print("删除数据成功")

    except Exception as e:
        db.rollback() # 若出现失败,进行回滚
        print("删除数据失败")
        print(e)

    finally:
        cursor.close()
        db.close()

if __name__ == "__main__":
    
    res = deleteDb()
    

注意:sql语句中需要更改的数据不管什么类型,统一使用%s作为占位符,不需要加引号

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值