python进阶07 MySQL

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

原文地址:https://www.cnblogs.com/xuchengcheng1215/p/8511354.html