python自动化笔记:操作mysql数据库

操作mysql数据库常见方法

1、第三方库:pymysql

1.1、安装pymysql

终端输入:pip install pymysql -i https://pypi.tuna.tsinghua.edu.cn/simple/

1.2、连接数据库

python 复制代码
import pymysql

def connect():
    # 连接数据库
    conn = pymysql.connect(
    host="localhost",
    user="root",
    password="123456"
    )
    print(conn)
    return(conn)
# 调用
connect()

1.3、连接指定数据库

python 复制代码
def connect_database(database):
    # 连接数据库
    conn = pymysql.connect(
    host="localhost",
    user="root",
    password="123456",
    database=database
    )
    print(conn)
    return(conn)

connect_database("test")

1.4 创建数据库、创建表

python 复制代码
# 创建数据库
def creatdatabase(databasename):
    # 连接数据库
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="123456"
    )
    # 创建游标对象
    cursor = conn.cursor()
    # sql中使用变量,格式化输出
    # 创建数据库
    sql ="CREATE DATABASE IF NOT EXISTS {0}".format(databasename)
    cursor.execute(sql)
    # 展示所有数据库
    cursor.execute("SHOW DATABASES;")
    # 展示执行结果
    for database in cursor:
        print(database)
# 调用
creatdatabase("test")

# 创建表
def createtable():
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="123456",
        database="test"
    )
    cursor = conn.cursor()
    # 删除表格
    cursor.execute("drop table if exists student")
    # 创建表格
    sql="create table student(id int auto_increment primary key, name varchar(20), class varchar(255))"
    cursor.execute(sql)

# 调用
createtable()

1.5、表中插入数据

python 复制代码
def insertdata():
    conn = pymysql.connect(
        host="localhost",
        user="root",
        password="123456",
        database="test"
    )
    # 创建游标对象
    cursor=conn.cursor()
    # 插入数据sql,2种方式,推荐使用第一种占位符的方式,避免sql注入
    # 方式一
    addsheshou_sql="insert into student(name,class)values(%s, %s)"
    addsheshou_value = ("luban", "1")
    cursor.execute(addsheshou_sql,addsheshou_value)
    # 方式二
    addfashi_sql = "insert into student(name,class)values('anqila','2')"
    cursor.execute(addfashi_sql)
    # 提交
    conn.commit()
    # 查询语句
    cursor.execute("select * from student where name='luban' ")
    # 查看返回结果
    res = cursor.fetchall()
    print(res)

# 调用
insertdata()

查看数据库增加了2条数据(也可通过命令行窗口查看):

1.6、批量插入数据

python 复制代码
def insertmany(database):
    conn = connect_database(database)
    # 创建游标对象
    cursor=conn.cursor()
    # 插入数据sql
    addmany_sql="insert into student(name,class)values(%s, %s)"
    addmany_values = (("huangzhong", "1"),("direnjie", "1"),("zhenji", "2"),("zhongwuyan", "3"))
    cursor.executemany(addmany_sql,addmany_values)
    # 提交
    conn.commit()
    select_showall(database, "select * from student")

insertmany('test')

查看数据库增加了多条数据(也可通过命令行窗口查看):

1.7、获取查询结果数据

常用方法:

fetchall() 获取所有的记录

fetchone()获取第一行记录

fetchmany(size)获取前几行记录

python 复制代码
def select_showall(database,sql):
    conn=connect_database(database)
    # 创建游标对象
    cursor = conn.cursor()
    cursor.execute(sql)
   
    # 每次执行cur.fetchone()语句,游标都会向下走,所以不能同时查询
    # 查询所有记录
    # allrows = cursor.fetchall()
    # print(allrows)
    # 查询多条记录
    # manyrows = cursor.fetchmany(2)
    # print(manyrows)
    # 查询第一条数据
    onerow = cursor.fetchone()
    print(onerow)
    print(type(onerow))

# 调用
select_showall('test','select * from student where class="1"')

1.8、防sql注入,sql语句中一般用占位符传值

python 复制代码
def select_data(database):
    conn=connect_database(database)
    # 创建游标对象
    cursor = conn.cursor()
    # 避免sql注入
    sql="select * from student where name=%s"
    svalue=("luban",)
    data=cursor.execute(sql,svalue)
    print(data)

select_data('test')

2、标准库 :mysql.connector

2.1、安装mysql-connector

终端输入:pip install mysql-connector -i https://pypi.tuna.tsinghua.edu.cn/simple/

2.2、操作方法

实现的逻辑跟pysql一致,相同的操作,操作方法也一致

相关推荐
ly76893 小时前
PostgreSQL 流复制与高可用切换:主从延迟、同步提交与 Spring Boot 读写分离的边界
数据库·spring boot·postgresql·读写分离·流复制·高可用切换
外收内放3 小时前
Python基础语法练习题(72)
开发语言·python
171320330计算机毕设编程4 小时前
计算机毕业设计 基于Hadoop的新能源汽车发展前景分析 LW PPT
java·大数据·hadoop·python·算法·随机森林·线性回归
工业传感笔记4 小时前
光电传感器选型指南:进口品牌与国产方案的三梯队差距与判断方法
其他·自动化
haluhalu.4 小时前
深入理解 AI Agent(1.2):Harness 工程——模型之外的竞争力
前端·数据结构·人工智能·python·langchain·个人开发
l1t4 小时前
修改两处,让SQLite求解数独SQL在datafusion上运行
服务器·数据库·sql
data analyse 4564 小时前
服务端统计时区切换的日期归并
大数据·前端·数据库·人工智能·数据分析
东莞市云毅网络有限公司4 小时前
把网页表格与列表还原成结构化条目:抽取与对账实现
python·文本处理·数据抽取
远方16094 小时前
108-ORA-00600 [kdsgrp1-qetlbr] 内部错误排查与 RMAN 块级恢复
大数据·linux·数据库·oracle
夜瞬4 小时前
从零微调 Qwen3-8B:基于 LoRA 与 LLaMA-Factory 打造专属 AI 编程助教
人工智能·python·llama