pymysql库用法

pymysql库用法,第1张

今天我们来学习一下pymysql连接MySQL的一些基本 *** 作

准备工具:mysql数据库,pymysql库,python编辑器(pycharm或者vscode都可以)

  1. 数据库安装

首先是mysql数据库的安装,这个可以直接去官网安装,详情安装链接可以参考数据库安装

  1. pymysql库安装
    这个简单直接在全局变量下或者在你自己创建的虚拟环境下pip install pymysql。



    安装好了之后在编辑器中导入pymysql如果没报错的话就说明安装成功了。


import pymysql
  1. 连接mysql数据库
import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306)

# 创建可执行游标
cursor = db.cursor()

因为我的数据库在安装的时候创建了密码所以我这里添加了password参数,你们可以按照安装的数据库来选择输入那些参数

  1. 在MySQL中创建创建自己的数据库

# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306)

# 创建可执行游标
cursor = db.cursor()
# sql语句,创建一个test数据库,并设置编码格式为utf8mb4,至于为什么不设置utf8而是utf8mb4是因为,utf8识别不了一些图标,utf8mb4可以
sql = 'CREATE DATABASE test DEFAULT CHARACTER SET utf8mb4'
# 尝试执行sql语句
try:
    if cursor.execute(sql):
        print('Successful')
# 如果创建失败会报出异常提醒你哪里出错了        
except BaseException as e:
    print('Failed:', e)
    # 报出异常后数据库执行数据回调,这样不会改变数据库
    db.rollback()
# 关闭数据库
db.close()


这样我们就在MySQL数据库里创建了一个test数据库

  1. 创建表格
# 连接MySQL数据库里的test数据库,添加了一个参数db,也就是数据库名的参数
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')

# 创建可执行游标
cursor = db.cursor()
# 创建表的SQL语句,创建了一个students的表,并给定了三个字段(id, name, age)其中id和age是整数,name是字符串长度最大为255,设置了id字段为表的主键
sql = 'CREATE TABLE students (id INT NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))'
# 执行SQL语句
cursor.execute(sql)


这样我们就在数据库里面成功创建了一个表

  1. 插入数据
import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')

# 创建可执行游标
cursor = db.cursor()
# 将表名赋值给变量table
table = 'students'
# 要插入的数据
data = {
    'id': 10086,
    'name': '小黑',
    'age': 21
}
# 对应表里的字段,注意这里转换成字符串时,要用,和空格隔开每个字符串
keys = ', '.join(data.keys())
# 一个字段就对应一个占位符,三个字段对应着数据字典里面的三个键
values = ', '.join(['%s'] * len(data))
# 插入数据SQL语句
sql = 'INSERT INTO {table}({keys}) VALUES ({values})'.format(table=table, keys=keys, values=values)

# 执行SQL语句
try:
    if cursor.execute(sql, tuple(data.values())):
        print('Successful')
        # SQL语句执行成功就调用commit方法,改变数据库
        db.commit()
except:
    print('Failed')
    # 执行失败就执行rollback数据回滚,数据库不发生改变
    db.rollback()
db.close()


这样我们就成功的插入了数据

  1. 更新数据
import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')

# 创建可执行游标
cursor = db.cursor()
table = 'students'
# 我这里修改了age值,其他的值没变
data = {
    'id': 10086,
    'name': '小黑',
    'age': 28
}
keys = ', '.join(data.keys())
values = ', '.join(['%s'] * len(data))
# 和插入数据时的SQL语句有点不同,增加了如果主键重复就执行更新,否则就插入
sql = 'INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE '.format(table=table, keys=keys, values=values)
# 用于更新时的字段比对
update = ','.join(['{key} = %s'.format(key=key) for key in data])
# 语句合并
sql += update
# 和之前 *** 作相同
try:
    if cursor.execute(sql, tuple(data.values())*2):
        print('Successful')
        db.commit()
except:
    print('Failed')
    db.rollback()
db.close()


我们成功的将id为10086的这一行数据给更新了

  1. 数据查询
import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')

# 创建可执行游标
cursor = db.cursor()
table = 'students'
# SQL查询语句,查询表格里满足age值大于18的全部字段
sql = 'SELECT * FROM {table} WHERE age > 18'.format(table=table)
# 执行SQL语句
try:
    if cursor.execute(sql):
    # 满足查询条件的第一个结果
        result = cursor.fetchone()
        # 查询到的行数
        print('Count: ', cursor.rowcount)
        # 逐条获取查询语句,每查询一次指针就偏移一次,简单高效
        while result:
            print(result)
            result = cursor.fetchone()

except:
    print('NOT FOUND DATA FROM STUDENTS')
db.close()

成功查询到了2个结果,其他查询条件语句可以自行去参考SQL查询条件语句大全比如字符串查询(LIKE)

  1. 删除数据
import pymysql

# 连接MySQL数据库
db = pymysql.connect(host='localhost', user='root', password='987654aaa', port=3306, db='test')

# 创建可执行游标
cursor = db.cursor()
table = 'students'
# SQL语句删除students中age大于18的所有数据
sql = 'DELETE FROM {table} WHERE age > 18'.format(table=table)

try:
    if cursor.execute(sql):
        print('DELETE Successful')
        # 因为删除数据改变了数据库,所以要执行commit方法
        db.commit()

except:
    print('NOT FOUND DATA FROM STUDENTS')
    # 删除失败就执行数据回滚
    db.rollback()
db.close()



我们成功的删除了满足条件的数据,pymysql的基本用法就是这些了,如果你想了解更多的话可以去查询pymysql官方文档

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/570818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存