python mysql总结
参考资料1:https://blog.csdn.net/yongheng0852/article/details/79508584
目录
1、启动服务:
方法一:以开启一个进程的方式开启:
(1)定位到mysqld.exe文件目录,cmd
(2)启动服务进程
(3)关闭服务进程
方法二:开启服务
注意:这个方法必须管理员身份运行cmd
(1)net start 服务名(开启服务)
(2)net stop 服务名(关闭服务)
方法三:任务管理器
右键开启就行,关闭一样
方法四:管理-->服务
2、显示所有数据库:
show databases; --显示所有的数据库
注意:下面这三个数据库是系统数据库,一定不要修改
3、创建数据库
create database 数据库名 charset='utf8'; --创建数据库兼容utf8的字符集
show databases; --查看有没有创建数据库
4、删除数据库
drop database 数据库名;
5、使用数据库
use 数据库名;
6、显示所有的表
show tables;
7、了解数据库:
- 表
- 视图view(sql产生一个表,用于简化代码复杂度)
- 存储过程(函数)------》减少了数据库的编译过程,直接将编译好的指令给数据库处理
- 触发器 trigger
常用数据库的处理过程:app 发送一个sql给数据库,数据库先检验sql语句的规范性,然后编译sql语句,执行sql语句,返回结果给app
8、数据库的处理语言
SQL 结构化查询语言(Structured Query Language):
- DCL 数据控制语言(GRANT,REVOKE)
- DDL 数据定义语言(创建表)
- DML 数据操作语言(增删改查)
- TCL 事务处理语言(COMIT,ROLLBACK,SAVEPOINT)
- DQL 数据查询语言 (SELECT)
- CCL 指针控制语言
9、对表的数据处理
----建表:
create table if not exists 表名(字段名1 数据类型 约束 , 字段名2 数据类型 约束 );
注释:约束:主键,序列(不允许重复unique),默认值default,核查(数据检查),not null
(1)创建一个用户表
查看表结构:
eg:创建一个成绩表
create table t_score(id int auto_increment primary key not null,
xm varchar(20) not null,
shuxue int not null ,
yuwen int not null,
yingyu int not null);
----添加数据
insert into 表名(字段1,字段3,。。。) values (value1,value3,。。。)
注意:插入哪个字段,字段列表中写哪个字段。这儿字段次序无所谓,几个也无所谓
insert into 表名 values (所有字段值)
注意:这个就得把所有字段值一一写上了
eg:
insert into t_user(uname,upwd) values('zs','1234');
commit; #提交 (手动提交,一般都是自动提交了)
----扩展:
事务处理语言:https://blog.csdn.net/moxigandashu/article/details/62046030
- commit; 提交
- rollback; 回滚(一般应用于多表操作的时候,如果一个表操作成功,另外一个表的操作失败,这个时候就需要把数据回滚)
- savepoint 回滚点
- begin; 用于事物处理的开始
eg:
--删除数据
delete from 表名; #删除这个表数据,保留了表结构,会做日志,能回滚
delete from 表名 where 条件 #删除满足条件的数据
条件:> >= < <= = != <>
truncate table 表名; #删除表中所有的数据,保留了表结构,但是不会做日志,不能回滚
drop table 表名; #直接删除整张表以及表结构
eg:
--修改数据:
update 表名 set 字段1 =值1,字段3 =值3。。。; #修改所有数据
update 表名 set 字段1 =值1,字段3 =值3。。。 where 条件;; #修改满足条件的数据
eg:
10、python操作数据库
(1)创建一个新的虚拟环境
(2)安装模块
方法一:setting-->Project Interpreter-->右上角 + 号
方法二:--pip install pymysql #(不用大写)
注意:使用pip list 查看当前环境所有模块
(3)python代码
A----查看主机名:
B----Python 代码
#导包
import pymysql
#创建数据库的连接
# 1、conn = pymysql.connect(主机名,端口号,用户名,密码,数据库,字符集)
conn = pymysql.connect(host='localhost',port=3306,user='root',
password='root',db='person',charset='utf8')
print('conn类型:',type(conn)) #110测试
#2、创建游标---相当于一个指针(指向所有记录的最前边)
cursor = conn.cursor()
#3、通过游标去运行sql
try:
# ====操作1:创建表======
# --返回受影响的行数
rows = cursor.execute('create table if not exists t_temp(a varchar(10) primary key)')
print('受影响的行数为:',rows) #110测试
# =====操作2:插入数据======
rows = cursor.execute("insert into t_temp values('aaa')")
print(rows) #110测试
# =====操作3:删除数据=====
rows = cursor.execute("delete from t_temp where a = 'aaa'")
print(rows) #110测试
# =====操作4:插入大量数据=====
for i in range(1000,1001):
rows = cursor.execute("insert into t_temp values('aaaa%s')"%(str(i+1)))
print(rows) #110测试
if i % 1000 == 0:
conn.commit()
# ======操作5:查询数据=======cursor是一个前进型的游标,不能向前走
rows = cursor.execute("select * from t_temp")
print(rows) #110测试
rs = cursor.fetchone() #读一行,游标指向下一个位置
print(rs) #110测试
rss = cursor.fetchall() #读取所有行,二维元组
print(rss) #110测试
rsm = cursor.fetchmany(5) #取得检索结果的n条数据
print(rsm) #110测试
# 操作6:
cursor.scroll(1,mode='absolute') #绝对位置:游标指向下标为1位置
cursor.scroll(-1,mode='relative') #相对当前位置,-1的位置
# 操作7:测试lastrowid 只有在新插入数据的时候,返回自增ID的值,
# 如果只是查询,返回None,其余为0(如果没有自增主键也为0)
lastrowid = cursor.lastrowid
print(lastrowid)
print('==》',cursor.fetchall()) #110测试
#---提交----
conn.commit() #提交
except Exception as e:
print(e)
conn.rollback() #回滚--当报错的时候
else:
print('execute Ok!')
finally:
#关闭游标
cursor.close()
#关闭这个连接
conn.close()
11、新建数据库,并且固定字符集为utf8
CREATE DATABASE 数据库名字 DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;