前言

今天使用py3里面的pymysql库对MySQL数据库进行DDL,DML语句的操作,分别为创建表,修改表,删除表,对表的数据进行增删改查,SQL语句都是举的简单例子,具体多种格式可去自行学习SQL语句

首先是DDL语句

①下面是DDL对表结构的修改

alter table [表名] modify [字段名] [新属性] #修改原有属性
alter table [表名] change [老字段]   [新字段]  [数据类型] [属性] #重命名字段
alter table [表名]  add (column)  [字段名]  [数据类型]  [列属性] #新增字段 括号内容可加可不加
alter table 表名 drop 字段名  #新增字段

②创建表与删除表

创建表

   create table t_student[表名](
     sno int primary key auto_increment, #主键,自增长
     sname varchar(30) not null,
     age int(2),
     score float(3,1)
     [字段名] [属性] [可设置primary key 主键] [是否非空,默认可以空] [default 默认值] [comment 备注名]
    )
删除表

DROP TABLE [表名]
具体代码如下,DDL语句就可放在sql字符串里面执行不同命令
#导入pymysql
import pymysql
#创建连接 参数分别是主机号,用户名,密码,数据库名字,端口号
con=pymysql.connect(host='localhost',user='root',password='123456',database='test',port=3306)
#创建游标对象
cur=con.cursor()
#编写创建表的sql
sql="""
    create table t_student(
     sno int primary key auto_increment,
     sname varchar(30) not null,
     age int(2),
     score float(3,1)
    )
""" #在此处修改
try:
    # 执行创建表的sql
    cur.execute(sql)
    print('创建表成功')
except Exception as e:
    print(e)
    print('创建表失败')
finally:
    #关闭连接
    con.close()

然后是DML语句

①插入数据,多行与单行

sql语句

insert into [表名]([字段名...]) values([%s...])
具体看下面代码
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='localhost',password='123456',user='root',port=3306,database='test')
#创建游标对象
cur=con.cursor()
#编写插入数据的sql
sql='insert into t_student(sname,age,score) values(%s,%s,%s)'
try:
    # 执行sql
    cur.executemany(sql,[('张三',19,99.8),('李四',18,99.9),('王五',18,99.8)])
    #当然插入一条就不用列表的形式
    #cur.execute(sql, ('张三', 18, 99.9)) #插入一条
    #提交事务
    con.commit()
    print('插入成功')
except Exception as e:
    print(e)
    con.rollback() #插入失败 事务回滚,一条DML指令不成功 全部都是默认失败
    print('插入失败')
finally:
    #关闭连接
    con.close()

②删除数据

SQL删除数据格式

delete from [表名] where [条件] #条件就是字段名符合指定的条件
具体看下面代码
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='localhost',password='123456',user='root',port=3306,database='test')
#创建游标对象
cur=con.cursor()
#编写删除的sql
sql='delete from t_student where sname=%s'
#执行sql语句
try:
    cur.execute(sql,('张三'))
    con.commit()
    print('删除成功')
except Exception as e:
    print(e)
    con.rollback()
    print('删除失败')
finally:
    #关闭连接
    con.close()

③修改数据

SQL修改数据的格式

update [表名] set [想要修改的目的] where [符合修改的条件]
具体看下面
#导入模块
import pymysql
#创建连接
con=pymysql.connect(host='localhost',database='test',user='root',password='123456',port=3306)
#创建游标对象
cur=con.cursor()
#编写修改的sql
sql='update t_student set sname=%s where sno=%s'
#执行sql语句
try:
    cur.execute(sql,('张三',1)) #按顺序设置对应的参数
    con.commit()
    print('修改成功')
except Exception as e:
    print(e)
    con.rollback()
    print('修改失败')
finally:
    #关闭连接
    con.close()

④查询数据

SQL查询数据的格式 有很多花样 自行学习SQL吧

select * from t_student where age=18 #单表查询 获得所有表的字段属性
select sno,sname from t_student where age=18 #单表查询 获得对应条件指定的字段属性
select [表1].[字段名],[表2].[字段名] from [表1],[表2] where [表1].[字段名]=[表2].[字段名] #嵌套查询
#导入pymysql
import pymysql
#创建连接
con=pymysql.connect(host='localhost',database='test',user='root',password='123456',port=3306)
#创建游标对象
cur=con.cursor()
#编写查询的sql
sql='select * from t_student where age=18'
#执行sql
try:
    cur.execute(sql)
    #处理结果集
    students=cur.fetchall() #查询获得所有符合条件的结果 返回的是双重列表 一行数据一个列表
    #student=cur.fetchone() #查询获得单条查询结果 返回一个列表
    for student in students:
        sno=student[0]
        sname=student[1]
        age=student[2]
        score=student[3]
        print('sno:',sno,'sname:',sname,'age:',age,'score:',score)
except Exception as e:
    print(e)
    print('查询所有数据失败')
finally:
    #关闭连接
    con.close()

评论