用pymysql进行mysql的基础操作

1. 安装pymysql

pip install pymysql
Requirement already satisfied: pymysql in d:\programfiles\anaconda3\lib\site-packages (1.0.2)
Note: you may need to restart the kernel to use updated packages.

2. 导入pymysql

import pymysql

3. 创建数据库

3.1 打开连接

# 打开数据库连接
config = {
'host':'localhost',
'port':3306,
'user':'root',
'password':'123456'
}
conn = pymysql.connect(**config)
cursor=conn.cursor()

3.2 创建数据库

# sql创建数据库语句
sql = """
CREATE DATABASE IF NOT EXISTS yggl2
DEFAULT CHARACTER SET gb2312
DEFAULT COLLATE gb2312_chinese_ci;
"""
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    print("创建数据库yggl2提交成功!")
except:
    # 如果发生错误则回滚
    conn.rollback()
    print("创建数据库yggl2发生错误,回滚...")
创建数据库yggl2提交成功!

3.3 创建数据表

conn.select_db('yggl2') #选择yggl2为当前数据库
# sql创建数据表语句
sql="""
CREATE TABLE IF NOT EXISTS Employees(
    员工编号 char(6)    NOT NULL PRIMARY KEY,
    姓名     char(10)   NOT NULL,
    学历     char(4)    NOT NULL,
    出生日期 date       NOT NULL,
    性别     char       NOT NULL,
    工作年限 tinyint(2) NULL,
    地址     varchar(20) NULL,
    电话号码 char(12)    NULL,
    员工部门号  char(3)  NULL
    )ENGINE=INNODB;
"""
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    print("创建数据表Employees提交成功!")
except:
    # 如果发生错误则回滚
    conn.rollback()
    print("创建数据表Employees发生错误,回滚...")
创建数据表Employees提交成功!

3.4 插入数据–增

# sql插入数据语句
sql="""
INSERT INTO Employees(员工编号, 姓名,学历,出生日期,性别,工作年限)     
    VALUES
        ('001','张三','大专','1991-01-01','男',2),
        ('002','李四','本科','1988-02-01','男',3),
        ('003','王五','硕士','1986-12-01','男',5),
        ('004','赵六','博士','1984-12-01','男',5),
        ('005','钱七','中专','1995-06-06','女',1);
"""
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    print("插入数据到数据表Employees提交成功!")
except:
    # 如果发生错误则回滚
    conn.rollback()
    print("插入数据到数据表Employees发生错误,回滚...")
插入数据到数据表Employees提交成功!

3.5 删除数据–删

# sql删除数据语句
table = "Employees"
where = "员工编号='005'"
sql = "DELETE FROM "  + table + " WHERE " + where #从表Employees中删除员工编号为005的记录
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    print(f"删除数据表Employees中{where}数据提交成功!")
except:
    # 如果发生错误则回滚
    conn.rollback()
    print(f"删除数据表Employees中{where}数据发生错误,回滚...")

删除数据表Employees中员工编号='005'数据提交成功!

3.6 修改数据–改

# sql修改数据语句
sql="""
UPDATE Employees
    SET 性别="女"
        WHERE 员工编号="004";
"""
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    print("修改数据表Employees中数据提交成功!")
except:
    # 如果发生错误则回滚
    conn.rollback()
    print("修改数据表Employees中数据发生错误,回滚...")
修改数据表Employees中数据提交成功!

3.7 获取数据–查

import pandas as pd
column_list = "员工编号,姓名,性别"
table = "Employees"
sql = "SELECT " + "*"  + " FROM "  + table #从表Employees中选出所有列
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    
    # 显示每列的详细信息
    des = cursor.description
#     print("表的描述:", des)
    # 获取表头
#     print("表头:", ",".join([item[0] for item in des]))
    columnNames = [item[0] for item in des]
#     print(columnNames)
    
    data = cursor.fetchall()#获取所有数据
#     print(data)
    print("查询数据表Employees中数据提交成功!")
    df_data = pd.DataFrame(data,columns=columnNames)
    df_data.set_index(["员工编号"], inplace=True)
    display(df_data)
except:
    # 如果发生错误则回滚
    conn.rollback()
    print("查询数据表Employees中数据发生错误,回滚...")
查询数据表Employees中数据提交成功!
姓名学历出生日期性别工作年限地址电话号码员工部门号
员工编号
001张三大专1991-01-012NoneNoneNone
002李四本科1988-02-013NoneNoneNone
003王五硕士1986-12-015NoneNoneNone
004赵六博士1984-12-015NoneNoneNone
column_list = "员工编号,姓名,性别,出生日期,学历,工作年限"
table = "Employees"
where = "性别='男'"
#从表Employees中选出男员工的员工编号、姓名和性别列
sql = "SELECT " + column_list + " FROM "  + table  + " WHERE "+ where 
try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    conn.commit()
    
    # 显示每列的详细信息
    des = cursor.description
    columnNames = [item[0] for item in des]
    
    data = cursor.fetchall()#获取所有数据
    print("查询数据表Employees中数据提交成功!")
    df_data = pd.DataFrame(data,columns=columnNames)
    df_data.set_index(["员工编号"], inplace=True)
    display(df_data)
except:
    # 如果发生错误则回滚
    conn.rollback()
    print("查询数据表Employees中数据发生错误,回滚...")
查询数据表Employees中数据提交成功!
姓名性别出生日期学历工作年限
员工编号
001张三1991-01-01大专2
002李四1988-02-01本科3
003王五1986-12-01硕士5

3.8 关闭连接与游标

后开先关
cursor.close()  #关闭游标
conn.close()    #关闭连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值