前言
今天使用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()