MySQL篇,第四章:数据库知识4

MySQL 数据库 4

数据备份(在Linux终端操作)
1、命令格式
mysqldump -u用户名 -p 源库名 > 路径/XXX.sql
2、源库名的表示方式
--all-databases 备份所有库
库名 备份单个库
-B 库1 库2 ... 备份多个库
库名 表1 表2 ... 备份指定库的指定表
3、练习
1、备份所有库为all_mysql.sql放到主目录下mydata目录中
2、备份三个库,放到mydata目录中
3、备份省、市、县三张表

 

ctrl + shift + t^C
mkdir mydata
ls mydata/
mysqldump -uroot -p db3 > ~/mydata/db3.sql
cd mydata/
#
mysqldump -uroot -p --all-databases > /home/tarena/mydata/all_mysql.sql
#
mysqldump -uroot -p -B db1 db2 db3 > /home/tarena/mydata/san_mysql.sql
#
 mysqldump -uroot -p db3 sheng city xian > /home/tarena/mydata/db3_san.sql

 

 

数据恢复(在Linux终端操作)
  1、命令格式
mysql -uroot -p 目标库名 < 路径/XXX.sql
  2、从所有库的备份文件中恢复某一个库(--one-database)
mysql -uroot -p --one-database 目标库名 < 路径/all_mysql.sql
  3、练习
1、先备份db3库,删除省、市、县三张表
2、在db3库中创建一张表 t888
create table t888(id int);
3、恢复db3库
  4、注意
1、恢复库时如果恢复到原有库会将表中数据覆盖,新增的表不会删除
2、在恢复时如果要恢复的库不存在,则先要创建空库

 

  1 mysql> show databases like 'db3';
  2 +----------------+
  3 | Database (db3) |
  4 +----------------+
  5 | db3            |
  6 +----------------+
  7 1 row in set (0.00 sec)
  8 
  9 mysql> show databases like '%db3%';
 10 +------------------+
 11 | Database (%db3%) |
 12 +------------------+
 13 | db3              |
 14 +------------------+
 15 1 row in set (0.00 sec)
 16 
 17 mysql> show databases like '%db%';
 18 +-----------------+
 19 | Database (%db%) |
 20 +-----------------+
 21 | db1             |
 22 | db2             |
 23 | db3             |
 24 +-----------------+
 25 3 rows in set (0.00 sec)
 26 
 27 mysql> drop database db3;
 28 Query OK, 16 rows affected (3.48 sec)
 29 
 30 mysql> show databases like '%db3%';
 31 Empty set (0.00 sec)
 32 
 33 mysql> 开始恢复 db3 \c
 34 mysql> 
 35 mysql> create database db3;
 36 Query OK, 1 row affected (0.03 sec)
 37 
 38 mysql> 1,创建空库\c
 39 mysql> use db3
 40 Database changed
 41 #恢复db3
 42 #cd mydata
 43 #mysql -uroot -p db3 < db3.sql 
 44 Enter password: 
 45 #
 46 mysql> show tables;
 47 +---------------+
 48 | Tables_in_db3 |
 49 +---------------+
 50 | bjtab         |
 51 | city          |
 52 | jftab         |
 53 | new_t2        |
 54 | new_t2_t2     |
 55 | sheng         |
 56 | t1            |
 57 | t2            |
 58 | t3            |
 59 | tt1           |
 60 | tt2           |
 61 | userinfo      |
 62 | userinfo2     |
 63 | userinfo3     |
 64 | userinfo4     |
 65 | xian          |
 66 +---------------+
 67 16 rows in set (0.02 sec)
 68 
 69 mysql> select * from sheng;
 70 +----+--------+--------------------+
 71 | id | S_ID   | S_name             |
 72 +----+--------+--------------------+
 73 |  1 | 130000 | 河北省             |
 74 |  2 | 140000 | 山西省             |
 75 |  3 | 150000 | 内蒙古自治区       |
 76 |  4 | 160000 | 辽宁省             |
 77 |  5 | 170000 | 黑龙江省           |
 78 +----+--------+--------------------+
 79 5 rows in set (0.00 sec)
 80 
 81 mysql> select * from city;
 82 +----+--------+-----------------+------------+
 83 | id | C_ID   | C_name          | CFather_ID |
 84 +----+--------+-----------------+------------+
 85 |  1 | 131100 | 石家庄市        |     130000 |
 86 |  2 | 131101 | 沧州市          |     130000 |
 87 |  3 | 131102 | 廊坊市          |     130000 |
 88 |  4 | 131103 | 衡水市          |     130000 |
 89 |  5 | 131104 | 太原市          |     140000 |
 90 |  6 | 131105 | 呼和浩特市      |     150000 |
 91 |  7 | 131106 | 包头市          |     150000 |
 92 |  8 | 131107 | 沈阳市          |     160000 |
 93 |  9 | 131108 | 大连市          |     160000 |
 94 | 10 | 131109 | 无锡市          |     320000 |
 95 | 11 | 131110 | 徐州市          |     320000 |
 96 | 12 | 131111 | 常州市          |     320000 |
 97 +----+--------+-----------------+------------+
 98 12 rows in set (0.05 sec)
 99 
100 mysql> 
101 ###
102 mysql> drop database db3;
103 Query OK, 16 rows affected (0.43 sec)
104 
105 mysql> 
106 mysql> create database db3;
107 Query OK, 1 row affected (0.00 sec)
108 
109 mysql> use db3;
110 Database changed
111 #
112 mysql -uroot -p --one-database db3 < ~/mydata/all_mysql.sql
113 #
114 mysql> show tables;
115 +---------------+
116 | Tables_in_db3 |
117 +---------------+
118 | bjtab         |
119 | city          |
120 | jftab         |
121 | new_t2        |
122 | new_t2_t2     |
123 | sheng         |
124 | t1            |
125 | t2            |
126 | t3            |
127 | tt1           |
128 | tt2           |
129 | userinfo      |
130 | userinfo2     |
131 | userinfo3     |
132 | userinfo4     |
133 ##
View Code

 

  1 mysql> 
  2 mysql> use db3;
  3 Database changed
  4 mysql> show tables;
  5 +---------------+
  6 | Tables_in_db3 |
  7 +---------------+
  8 | bjtab         |
  9 | city          |
 10 | jftab         |
 11 | new_t2        |
 12 | new_t2_t2     |
 13 | sheng         |
 14 | t1            |
 15 | t2            |
 16 | t3            |
 17 | tt1           |
 18 | tt2           |
 19 | userinfo      |
 20 | userinfo2     |
 21 | userinfo3     |
 22 | userinfo4     |
 23 | xian          |
 24 +---------------+
 25 16 rows in set (0.00 sec)
 26 
 27 mysql> drop table sheng,city,xian;
 28 Query OK, 0 rows affected (0.29 sec)
 29 
 30 mysql> create table t888(id int);
 31 Query OK, 0 rows affected (0.22 sec)
 32 
 33 mysql> show tables;
 34 +---------------+
 35 | Tables_in_db3 |
 36 +---------------+
 37 | bjtab         |
 38 | jftab         |
 39 | new_t2        |
 40 | new_t2_t2     |
 41 | t1            |
 42 | t2            |
 43 | t3            |
 44 | t888          |
 45 | tt1           |
 46 | tt2           |
 47 | userinfo      |
 48 | userinfo2     |
 49 | userinfo3     |
 50 | userinfo4     |
 51 +---------------+
 52 14 rows in set (0.00 sec)
 53 ##
 54 mysql -uroot -p db3 < ~/mydata/db3.sql 
 55 ##
 56 mysql> 恢复之后\c
 57 mysql> show tables;
 58 +---------------+
 59 | Tables_in_db3 |
 60 +---------------+
 61 | bjtab         |
 62 | city          |
 63 | jftab         |
 64 | new_t2        |
 65 | new_t2_t2     |
 66 | sheng         |
 67 | t1            |
 68 | t2            |
 69 | t3            |
 70 | t888          |
 71 | tt1           |
 72 | tt2           |
 73 | userinfo      |
 74 | userinfo2     |
 75 | userinfo3     |
 76 | userinfo4     |
 77 | xian          |
 78 +---------------+
 79 17 rows in set (0.00 sec)
 80 
 81 mysql> t888还存在\c
 82 mysql> select * from sheng;
 83 +----+--------+--------------------+
 84 | id | S_ID   | S_name             |
 85 +----+--------+--------------------+
 86 |  1 | 130000 | 河北省             |
 87 |  2 | 140000 | 山西省             |
 88 |  3 | 150000 | 内蒙古自治区       |
 89 |  4 | 160000 | 辽宁省             |
 90 |  5 | 170000 | 黑龙江省           |
 91 +----+--------+--------------------+
 92 5 rows in set (0.03 sec)
 93 
 94 mysql> select * from city;
 95 +----+--------+-----------------+------------+
 96 | id | C_ID   | C_name          | CFather_ID |
 97 +----+--------+-----------------+------------+
 98 |  1 | 131100 | 石家庄市        |     130000 |
 99 |  2 | 131101 | 沧州市          |     130000 |
100 |  3 | 131102 | 廊坊市          |     130000 |
101 |  4 | 131103 | 衡水市          |     130000 |
102 |  5 | 131104 | 太原市          |     140000 |
103 |  6 | 131105 | 呼和浩特市      |     150000 |
104 |  7 | 131106 | 包头市          |     150000 |
105 |  8 | 131107 | 沈阳市          |     160000 |
106 |  9 | 131108 | 大连市          |     160000 |
107 | 10 | 131109 | 无锡市          |     320000 |
108 | 11 | 131110 | 徐州市          |     320000 |
109 | 12 | 131111 | 常州市          |     320000 |
110 +----+--------+-----------------+------------+
111 12 rows in set (0.04 sec)
112 
113 mysql> select * from xian;
114 +----+--------+-----------+------------+
115 | id | X_ID   | X_name    | XFather_ID |
116 +----+--------+-----------+------------+
117 |  1 | 132100 | 河东区    |     131100 |
118 |  2 | 132101 | 正定县    |     131100 |
119 |  3 | 132102 | 固安县    |     131102 |
120 |  4 | 132102 | 香河县    |     131102 |
121 |  5 | 132103 | 哈哈      |     131112 |
122 +----+--------+-----------+------------+
123 5 rows in set (0.00 sec)
124 
125 mysql> 
View Code

 


ER模型&ER图
  1、定义
ER模型即实体-关系模型,ER图即实体-关系图
  2、三个概念
    1、实体
1、定义:现实世界中任何可以被认知、区分的事物
2、示例
  1、学校 :学生、教师、课程、班主任 ...
  2、企业 :职工、产品
    2、属性
1、定义 :实体所具有的特性
2、示例
  1、学生属性:学号、姓名、年龄、性别、专业 ...
  2、产品属性:产品编号、产品名称、规格 ...
    3、关系
1、定义 :实体之间的关系
2、分类
一对一关系(1:1) 班级和班长
一对多关系(1:n) 公司和职工、班级和学生
多对多关系(m:n) 学生和课程、商店和顾客
    4、ER图的绘制
1、矩形框代表实体, 菱形框代表关系, 椭圆形代表属性
2、示例
  学生选课系统

 

##########

workbench(图形化界面操作数据库) 5.7版本

##########

事务&事务回滚
  1、事务定义
一件事从开始发生到结束的整个过程
  2、属性
    1、原子性:一个事务是不可分割的工作单位,事务中的各个操作要么都做,要么就都不做
    2、一致性:事务必须从一个一致性状态到另一个一致性状态
    3、隔离性:一个事务的执行不能被其他并发事务干扰
    4、持久性:一个事务一旦提交,它对数据库的改变是永久性的


  3、事务及事务回滚的应用
    1、mysql中默认sql语句会自动commit到数据库
      show variables like "autocommit";
    2、事务应用
       1、开启事务
      mysql> start transaction;
      ## 此时autocommit被禁用,SQL命令不会对数据库中数据做修改
       2、终止事务
      mysql> commit; (提交) | rollback; (回滚,什么也没做)
       3、注意
      事务&事务回滚只针对对表记录的操作:增加、删除、修改,对创建库、创建表是无效的
  4、案例
1、背景
你 : 建行卡
你朋友:工商卡
你在建行的自动提款机给你朋友(工商银行卡)转账
2、过程
表1、建行:CCB
表2、工行:ICBC

###开始转账
mysql>start transaction;
mysql>update CCB set money=95000 where name="你";
mysql>update ICBC set ... 断电了...;
mysql>rollback

###验证
mysql>select * from CCB;

  1 mysql> show variables like 'autocommit';
  2 +---------------+-------+
  3 | Variable_name | Value |
  4 +---------------+-------+
  5 | autocommit    | ON    |
  6 +---------------+-------+
  7 1 row in set (0.98 sec)
  8 
  9 mysql> start transaction;
 10 Query OK, 0 rows affected (0.04 sec)
 11 
 12 mysql> show variables like 'autocommit';
 13 +---------------+-------+
 14 | Variable_name | Value |
 15 +---------------+-------+
 16 | autocommit    | ON    |
 17 +---------------+-------+
 18 1 row in set (0.00 sec)
 19 
 20 mysql> show tables;
 21 +---------------+
 22 | Tables_in_db3 |
 23 +---------------+
 24 | bjtab         |
 25 | city          |
 26 | jftab         |
 27 | new_t2        |
 28 | new_t2_t2     |
 29 | sheng         |
 30 | t1            |
 31 | t2            |
 32 | t3            |
 33 | t888          |
 34 | tt1           |
 35 | tt2           |
 36 | userinfo      |
 37 | userinfo2     |
 38 | userinfo3     |
 39 | userinfo4     |
 40 | xian          |
 41 +---------------+
 42 17 rows in set (0.04 sec)
 43 
 44 mysql> insert into t888 values(1),(2),(3);
 45 Query OK, 3 rows affected (0.27 sec)
 46 Records: 3  Duplicates: 0  Warnings: 0
 47 
 48 mysql> commit;
 49 Query OK, 0 rows affected (0.00 sec)
 50 
 51 mysql> 
 52 [1]+  已停止               mysql -uroot -p123456
 53 tarena@tedu:~$ mysql -uroot -p123456
 54 mysql: [Warning] Using a password on the command line interface can be insecure.
 55 Welcome to the MySQL monitor.  Commands end with ; or \g.
 56 Your MySQL connection id is 20
 57 Server version: 5.7.22-0ubuntu0.16.04.1 (Ubuntu)
 58 
 59 Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
 60 
 61 Oracle is a registered trademark of Oracle Corporation and/or its
 62 affiliates. Other names may be trademarks of their respective
 63 owners.
 64 
 65 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
 66 
 67 mysql> ues db3;
 68 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ues db3' at line 1
 69 mysql> 
 70 mysql> 
 71 mysql> use db3;
 72 Reading table information for completion of table and column names
 73 You can turn off this feature to get a quicker startup with -A
 74 
 75 Database changed
 76 mysql> start transaction;
 77 Query OK, 0 rows affected (0.00 sec)
 78 
 79 mysql> update t888 set id=10 where id=1;
 80 Query OK, 1 row affected (0.00 sec)
 81 Rows matched: 1  Changed: 1  Warnings: 0
 82 
 83 mysql> insert into t888 values(20);
 84 Query OK, 1 row affected (0.00 sec)
 85 
 86 mysql> roolback;
 87 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'roolback' at line 1
 88 mysql> 
 89 mysql> rollback;
 90 Query OK, 0 rows affected (0.07 sec)
 91 
 92 mysql> 回滚\c
 93 mysql> 
 94 mysql> start transtaction;
 95 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'transtaction' at line 1
 96 mysql> start transaction;
 97 Query OK, 0 rows affected (0.00 sec)
 98 
 99 mysql> create table t999(id int);
100 Query OK, 0 rows affected (0.55 sec)
101 
102 mysql> create database dbover;
103 Query OK, 1 row affected (0.02 sec)
104 
105 mysql> rollback;
106 Query OK, 0 rows affected (0.00 sec)
107 
108 mysql> 
109 ##############
110 mysql> use db3;
111 Reading table information for completion of table and column names
112 You can turn off this feature to get a quicker startup with -A
113 
114 Database changed
115 mysql> select * from t888;
116 Empty set (0.00 sec)
117 
118 mysql> select * from t888;
119 +------+
120 | id   |
121 +------+
122 |    1 |
123 |    2 |
124 |    3 |
125 +------+
126 3 rows in set (0.00 sec)
127 
128 mysql> mysql> select * from t888;
129 +------+
130 | id   |
131 +------+
132 |    1 |
133 |    2 |
134 |    3 |
135 +------+
136 3 rows in set (0.00 sec)
137 
138 mysql> show tables;
139 +---------------+
140 | Tables_in_db3 |
141 +---------------+
142 | bjtab         |
143 | city          |
144 | jftab         |
145 | new_t2        |
146 | new_t2_t2     |
147 | sheng         |
148 | t1            |
149 | t2            |
150 | t3            |
151 | t888          |
152 | t999          |
153 | tt1           |
154 | tt2           |
155 | userinfo      |
156 | userinfo2     |
157 | userinfo3     |
158 | userinfo4     |
159 | xian          |
160 +---------------+
161 18 rows in set (0.00 sec)
162 
163 mysql> show databases;
164 +--------------------+
165 | Database           |
166 +--------------------+
167 | information_schema |
168 | MoShou             |
169 | SANGUO             |
170 | db1                |
171 | db2                |
172 | db3                |
173 | dbover             |
174 | mysql              |
175 | performance_schema |
176 | sys                |
177 +--------------------+
178 10 rows in set (0.00 sec)
179 
180 mysql> show tables like 't999';
181 +----------------------+
182 | Tables_in_db3 (t999) |
183 +----------------------+
184 | t999                 |
185 +----------------------+
186 1 row in set (0.04 sec)
187 
188 mysql> show database like 'dbover';
189 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database like 'dbover'' at line 1
190 mysql> show databases like 'dbover';
191 +-------------------+
192 | Database (dbover) |
193 +-------------------+
194 | dbover            |
195 +-------------------+
196 1 row in set (0.03 sec)
197 
198 mysql> 
View Code
 1 mysql>  create table CCB
 2     -> (name varchar(20),
 3     -> money int
 4     -> )default charset=utf8;
 5 Query OK, 0 rows affected (0.15 sec)
 6 
 7 mysql> insert into CCB values('转钱',100000);
 8 Query OK, 1 row affected (0.00 sec)
 9 
10 mysql> create table ICBC(
11     -> name varchar(20),
12     -> money int
13     -> )default charset=utf8;
14 Query OK, 0 rows affected (0.12 sec)
15 
16 mysql> insert into ICBC values('借钱',2000);
17 Query OK, 1 row affected (0.04 sec)
18 
19 mysql> 开始转账\c
20 mysql> start transaction;
21 Query OK, 0 rows affected (0.00 sec)
22 
23 mysql> update CCB set money=95000 where name='转钱';
24 Query OK, 1 row affected (0.00 sec)
25 Rows matched: 1  Changed: 1  Warnings: 0
26 
27 mysql> update ICBC set money=断电了,宕机了;
28     ->29     -> 
30     -> ;
31 ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
32 mysql> 
33 mysql> rollback;
34 Query OK, 0 rows affected (0.01 sec)
35 
36 mysql> select * from CCB;
37 +--------+--------+
38 | name   | money  |
39 +--------+--------+
40 | 转钱   | 100000 |
41 +--------+--------+
42 1 row in set (0.00 sec)
43 
44 mysql> select * from ICBC;
45 +--------+-------+
46 | name   | money |
47 +--------+-------+
48 | 借钱   |  2000 |
49 +--------+-------+
50 1 row in set (0.00 sec)
51 
52 mysql> 
View Code

 

 

Python数据库编程
  1、python数据库接口(Python DB-API)
    1、定义:为开发人员提供的数据库应用编程接口
  2、支持的数据库服务软件
    MySQL、Oracle、SQL_Server、Sybase、Mongodb ...
  3、Python提供的操作MySQL的模块
    模块名:pymysql (python3) ,mysqldb(python2)
  4、pymysql的使用流程
    1、建立数据库连接
    2、创建游标对象
    3、使用游标对象的方法和SQL语句操控MySQL数据库
    4、提交commit
    5、关闭游标
    6、关闭数据库连接
  5、建立数据库连接
    1、语法格式
    对象名(db) = pymysql.connect("主机地址","用户名","密码","库名",charset="utf8")
    2、connect对象(db)的方法
      1、cursor() 创建一个游标对象db.cursor()
      2、commit() 提交到数据库 db.commit()
      3、rollback() 回滚 db.rollback()
      4、close() 关闭与数据库的连接 db.close()
    3、cursor游标对象(cur)的方法
      1、execute() 执行sql命令
      2、fetchone() 取得结果集的第一条记录
      3、fetchmany(数字) 取得结果集的 几条 记录
    4、fetchall() 取得结果集的所有行
    5、close() 关闭游标对象
      属性:rowcount : 返回命令执行所影响的条数(  cur.rowcount  )

        

      pymysql.connect --->>db ---> db.cursor() ----> 执行

 

 1 import pymysql
 2 
 3 #1,打开数据库连接
 4 db = pymysql.connect("localhost",'root',
 5                     '123456',charset="utf8")
 6 #创建一个游标对象
 7 cur = db.cursor()
 8 #创建库
 9 cur.execute("create database if not exists python;")
10 #切换库
11 cur.execute("use python;")
12 #创建表
13 cur.execute("create table if not exists t1(\
14             id int primary key,\
15             name varchar(20),\
16             score tinyint unsigned)default charset=utf8;")
17 #在t1中插入5条记录
18 cur.execute("insert into t1 values\
19             (1,'貂蝉',88),\
20             (2,'赵子龙',100),\
21             (3,'诸葛亮',80),\
22             (4,'张飞',60),\
23             (5,'司马懿',99);")
24 #提交到数据库
25 db.commit()
26 #关闭游标
27 cur.close()
28 #关闭数据库
29 db.close()
30 #####
31 mysql> show databases;
32 +--------------------+
33 | Database           |
34 +--------------------+
35 | information_schema |
36 | MoShou             |
37 | SANGUO             |
38 | db1                |
39 | db2                |
40 | db3                |
41 | dbover             |
42 | mysql              |
43 | performance_schema |
44 | python             |
45 | sys                |
46 +--------------------+
47 11 rows in set (0.01 sec)
48 
49 mysql> use python;
50 Reading table information for completion of table and column names
51 You can turn off this feature to get a quicker startup with -A
52 
53 Database changed
54 mysql> show tables;
55 +------------------+
56 | Tables_in_python |
57 +------------------+
58 | t1               |
59 +------------------+
60 1 row in set (0.03 sec)
61 
62 mysql> select * from t1;
63 +----+-----------+-------+
64 | id | name      | score |
65 +----+-----------+-------+
66 |  1 | 貂蝉      |    88 |
67 |  2 | 赵子龙    |   100 |
68 |  3 | 诸葛亮    |    80 |
69 |  4 | 张飞      |    60 |
70 |  5 | 司马懿    |    99 |
71 +----+-----------+-------+
72 5 rows in set (0.04 sec)
73 
74 mysql> desc t1;
75 +-------+---------------------+------+-----+---------+-------+
76 | Field | Type                | Null | Key | Default | Extra |
77 +-------+---------------------+------+-----+---------+-------+
78 | id    | int(11)             | NO   | PRI | NULL    |       |
79 | name  | varchar(20)         | YES  |     | NULL    |       |
80 | score | tinyint(3) unsigned | YES  |     | NULL    |       |
81 +-------+---------------------+------+-----+---------+-------+
82 3 rows in set (0.12 sec)
83 
84 mysql> 
View Code

 fetchone

 1 import pymysql
 2 #
 3 db = pymysql.connect('localhost','root','123456',
 4                      'python',charset='utf8')
 5 #创建游标
 6 cur = db.cursor()
 7 #mysql语句
 8 sql_select = 'select * from t1;'
 9 cur.execute(sql_select)
10 
11 data = cur.fetchone()
12 print('fetchone的结果为:',data)
13 
14 db.commit()
15 cur.close()
16 db.close()
17 ###
18 $ python3 Fetchone.py 
19 fetchone的结果为: (1, '貂蝉', 88)
View Code

 

Fetchmany-Fetchall

 1 import pymysql
 2 
 3 db = pymysql.connect('localhost','root','123456',\
 4                      'python',port=3306,charset='utf8')
 5 cur = db.cursor()
 6 sql_select = 'select * from t1;'
 7 cur.execute(sql_select)
 8 
 9 data = cur.fetchmany(2)
10 print("fetchmany的结果是:",data)
11 
12 data2 = cur.fetchall()
13 print('fetchall的结果为:',data2)
14 
15 db.commit()
16 cur.close()
17 db.close()
18 ####
19 python3 Fetchmany-all.py 
20 fetchmany的结果是: ((1, '貂蝉', 88), (2, '赵子龙', 100))
21 fetchall的结果为: ((3, '诸葛亮', 80), (4, '张飞', 60), (5, '司马懿', 99))
View Code

 

test

 

cur.rowcount

 1 import pymysql
 2 
 3 db = pymysql.connect('localhost','root','123456', \
 4                      'python',port=3306,charset='utf8')
 5 cur = db.cursor()
 6 sql_select = 'select * from t1;'
 7 cur.execute(sql_select)
 8 print('select记录的个数:',cur.rowcount)
 9 ####
10 $ python3 Fetchmany-all.py 
11 select记录的个数: 5
View Code

 rowback

 1 import pymysql
 2 
 3 db = pymysql.connect('localhost','root','123456' \
 4                       'db3',charset='utf8')
 5 cur = db.cursor()
 6 
 7 try:
 8     cur.execute('update CCB set money=95000 \
 9                 where name="转钱";')
10     cur.execute('update ICBC set money=7000 \
11                 where name="借钱";')
12     db.commit()
13     print('ok')
14 except Exception as e:
15     print(e)
16     db.rollback()
17 
18 #db.commit()
19 cur.close()
20 db.close()
View Code

 

python3 pyrollback.py 
ok
:~/python-mysql$ python3 pyrollback.py 
(1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'=7000                 where name="借钱"\' at line 1')
:~/python-mysql$ python3 pyrollback.py 
(1064, 'You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near \'=7000                 where name="借钱"\' at line 1')
出现错误,已经回滚。
:~/python-mysql$ 
View Code

 

 fengzhuang

 

 1 from pymysql import *
 2 
 3 class MysqlPython:
 4     def __init__(self,host,port,db,user, \
 5                  passwd,charset='utf8'):
 6         self.host = host
 7         self.port = port
 8         self.db = db
 9         self.user = user
10         self.passwd = passwd
11         self.charset = charset
12 
13     def open(self):
14         self.con = connect(host=self.host, \
15             port=self.port,db=self.db, \
16             user=self.user,passwd=self.passwd, \
17             charset=self.charset)
18         self.cursor = self.con.cursor()
19 
20     def close(self):
21         self.cursor.close()
22         self.con.close()
23 
24     def zhixing(self,sql):
25         self.open()
26         self.cursor.execute(sql)
27         self.con.commit()
28         self.close()
29 
30     def all(self,sql):
31         try:
32             self.open()
33             self.cursor.execute(sql)
34             data = self.cursor.fetchall()
35             self.close()
36 
37             return data
38         except Exception as e:
39             print(e)
40 ####
41 
42 from MysqlPython import MysqlPython
43 #update
44 name = input("请输入要修改的学生姓名:")
45 score = int(input("请输入该学生的新成绩:"))
46 sql = "update t1 set score='%s' where name='%s'" \
47        %(score,name)
48 sqlH = MysqlPython('localhost',3306,'python', \
49                     'root','123456')
50 sqlH.zhixing(sql)
View Code

 

posted on 2018-06-09 19:50  微子天明  阅读(282)  评论(0编辑  收藏  举报

导航