python进阶07 MySQL
一、MySQL基本结构
1、认识MySQL
#MySQL不是数据库,它是数据库管理软件 #MySQL如何组织数据 #如何进入MySQL数据库 #其他注意事项 #以表格的形式来储存数据 #MySQL管理数据库,数据库内衣表格的形式来储存数据
2、进入与退出 数据库
mysql -u(username) -p(password)#括号是不存在的,只是为了标重点,username用户名,password密码 exit #直接退出
3、注意事项
#语句结束符:每个语句都以;或G结束 #大小写:不严格区分大小写 #类型:强制数据类型、任何数据都有自己的类型 #逗号:最后一行不需要逗号
二、库,表级的操作
1、库级 管理语句
SHOW DATABASES;#显示所有库 CTEATE DATABASE db_name;#创建库 SHOW CREATE DATABASES db_name;#显示库创建信息 DROP DATABASE db_name; #删除库 USE db_name;#切换当前数据库,切换到该数据库才可以操作 #小写的内容可以自己定义,大写的内容不能
2、表级操作
SHOW TABLES; #显示所有表 CREATE TABLES tb_name(columns);#创建表,表格内容必须要有一列,所以在创建时就 SHOW CREATE TABLES tb_name;#显示表创建信息 DROP TABLE tb_name;#删除表
#常用约束 INT/BOOL #整数:整型,布尔型 DOUBLE/DECIMAL #实数:浮点数,定点数类型 CHAR/VARCHAR #文本 DATE/DATETIME #时间
import pymysql CREATE TABLE students( number CHAR(9),#固定长度的字符串,例如201801012; 逗号表示列名的切换 name VARCHAR (20), #最长可以是20个长度的可变长度字符串 age INT,#年龄类型,整型 birth DATE #日期类型; 最后一列不要加逗号 ); SHOW CREATE TABLE students;#输出 | students | CREATE TABLE `students` (`number` char(9) DEFAULT NULL,`name` varchar(20) DEFAULT NULL,`age` int(11) DEFAULT NULL,`birth` date DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8 | #若要显示更漂亮,输入SHOW CREATE TABLE studentsG
3、数据级 CRUD操作
#CRUD就是增删改查
C(Create)----INSERT INTO VALUES #增加,创建一行数据 1、INSERT INTO tb_name(col_names) VALUES (col_values);#指定列插入 2、INSERT INTO tb_name VALUES (all_values);#全列插入 3、INSERT INTO tb_name(col_names) VALUES(value_1),(value_2),...;多行插入 INSERT INTO students(number,name,age) VALUES ('20181001','tuple',19); #前后一一对应 INSERT INTO students VALUES ('20181001','tuple',19,'19901028');#全列插入时,所有数据都需要输入,不能少 INSERT INTO students(number,name,age) VALUES ('20181001','tuple',19),('20181002','tuple1',18)...#一次性插入多行 #如果每一行都插入一次,那么就需要给MySQL发送n次数据 #如果所有行一次插入,只需要与MySQL通信一次
R(Read)----SELECT FROM WHERE 1、SELECT col_names FROM tb_name;#指定列查询 2、SELECT * FROM tb_name;#全列查询 3、SELECT col_names FROM tb_name WHERE conditions;带条件的查询 SELECT name,age FROM students;#指定列的表 SELECT * FROM students;#整张表 SELECT name,age FROM students WHERE name='tuple'#就想看名字是tuple的人的内容,conditions是条件(相当于筛选)
U(UPDATE)----UPDATE SET WHERE#修改,更新 UPDATE tb_name SET filed_1=value_1 filed_2=values_2 ... WHERE a_filed=a_value; UPDATE students SET age=19 WHERE name='xiaopo'#SET 是列,WHERE是条件
D(Delect) ---- DELECT FROM WHERE #删除 DELECT FROM tb_name WHERE a_filed=a_value; DELECT FROM students WHERE name='tuple';#只删除tuple老师的内容 #实际上做开发不会真的删除数据,我们宁可让数据留在里面废弃,也不删除,可以在数据列最后加一列是否以删除 # C 创建 R 读取 U 更新 D 删除 也就是所谓的增删改查 CRUD
4、用python操作mysql
#DB-API问题引入 #python是不能直接操作MySQL的 #DB-API是什么东西
#其实连接器有很多种,现在最流行的是pymysql,但是还有别的
#如果,每个连接器都用一种语法,这会很难记忆,所以python官方给出了设计连接器的标准
#这也就是所谓的DB-API(统一但是接口标准)
#pymysql是连接python和mysql的连接器 #导入pymysql包 #创建一个py文件---->点击settings---->点击project右边的—绿色+号---->搜索pymysql包,导入即可 #pip 如果pycharm用的是虚拟环境,就需要在进入虚拟环境后在安装,如果不是,就直接pip3 install
import pymysql pymysql.connect(**dbconfig)#连接接口 cnn.close()#关闭接口 conn.cursor()#游标接口 连接是不能操作数据库的,需要用连接生成游标来操作 cur.close()# 关闭接口 cur.execute(sql)#执行接口 cur.fetchall()#结果集接口
连接与退出数据库
import pymysql db_config = { 'user': 'root',#用户名 'password': 'qwe123',#密码 'db': 'python3',#数据库(使用连接器的时候,通常要指定需要连接的数据库) 'charset': 'utf8', #而不是utf-8,字符集 } #生成一个连接 conn=pymysql.connect(**db_config)#得到一个连接对象 #使用从连接对象上生成一个“游标” cur=conn.cursor() rv=cur.execute('SELECT * FROM students') #想操作说明就丢什么代码进去,这句话是执行这个语句 res=cur.fetchall() #结果集操作,也就是拿到所有结果 for entry in res: print(entry)
#我们丢进去的sql也有可能报错,这样会使python报错 #所以我们要加个异常机制进去 try: cur=conn.cursor()#连接 cur.execute('CREATE TABLE teachers(name VARCHAR(20))')#执行 cur.execute('SHOW TABLES')#执行 res=cur.fetchall()#显示 for entry in res:#输出 print(entry) except Exception as e:#如果报错,执行下面信息 print(e) conn.rollback() #回滚,因为出错了,所以rollback撤销;回滚:假如说,我的脚本需要以下操作,一插入一个tuple老师,二插入一个lucky老师,必须要两个老师都插入,如果插入lucky老师的操作出错了,那么也应该把tuple老师的内容也删除掉,也就是回到上一次保存的状态 finally:#不管怎么样,最后要把游标和连接全部关闭 conn.commit()#commit提交,连接器必须要多这样一步,因为连接器操作的数据是没有直接生效的 cur.close() conn.close()
三、补充
1、pycharm配置linux连接
#没有配置环境是输入python进入的python2 #学院给的已经配置好了虚拟环境,输入python进入的是python3 #默认情况下,我们是不存在虚拟环境的 #输入workon会出现两个环境,一个py2,一个py3 #which python 查询python解释器所在路径 #windows不能操作linux的文件,所以还需要映射,将windows的代码映射到linux中去 #如何创建好任务在连接映射 #Tools---->Dsplayment---->Configuration---->点绿色+好添加路径---->SFTP----->配置解释器:SETTINGS----> Project ... ---->点击齿轮
2、推荐一个GUI操作数据库的软件 heidiSQL