一、MySQL的数据备份
语法: # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql #示例: #单库备份 mysqldump -uroot -p123 db1 > db1.sql mysqldump -uroot -p123 db1 table1 table2 > db1-table1-table2.sql #多库备份 mysqldump -uroot -p123 --databases db1 db2 mysql db3 > db1_db2_mysql_db3.sql #备份所有库 mysqldump -uroot -p123 --all-databases > all.sql
MYsql的数据备份
备份与恢复操作:
如:
mysqldump - uroot day43 > E:\\day43.sql
drop database day43; 删除原先的文件夹
show databases; 查看全部的文件夹
create database day43; 创建一个文件夹
use day43; 切换到day43这个文件夹下
source E:\\day43.sql; 恢复数据
mysqldump - uroot day51 > D:\\day51.sql
1、登录MySQL恢复:
drop database day51;
create database day51;
source D:\\day51.sql;
2、不登录MySQL直接在外面恢复;
mysql -uroot day51 < D:\\day51.sql
(2)、恢复到指定的库中:
create database bak; 新建一个文件夹
use dak; 切换到dak这个文件夹下
mysql -uroot bak < D:\\day51.sql; 恢复数据
只备份一个表
mysqldump - uroot day51 deparment > D:\\day51-deparment.sql
MySQL 进数据库
create database bakl; 新建一个库
quit 退出
在mysql外面恢复
mysql -uroot bakl < D:\\day51-deparment.sql
nysql 进数据库
use bakl 切换到dakl这个文件夹下
直接在数据库外面查看
mysql -uroot -e "use bakl"
mysql -uroot -e "use bakl;show tables;"
备份多个库
mysqldump -uroot -e "show databases;" 查看全部的库
备份
mysqldump -uroot --databases db1 db2 db3 > E:\\db1-db2-db3.sql
MySQL 进数据库
删除原来的文件夹
quit 退出
在外面查看
mysql -uroot < E:\\db1-db2-db3.sql 恢复数据库
mysqldump -uroot -e "show databases;"
备份所有库
mysqldump -uroot --all-databases > E:\\all.sql
二、表的导出和导入
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
表的导出和导入
(show variables like '%secur%';查看选项)
导出
use day51; 切换到day51下面
show tables; 查看表
select * from userinfo; 查看表下的文件夹
select * from userinfo into outfile 'E:\\userinfo.txt' fields terminated by ','lines terminated by '\n'; 导出
导入
create table user(
id int primary key auto_increment,
name char(32),
age int,
deparment_id int); 建表
load data infile 'E:\\userinfo.txt'
into table user fields terminated by ','lines terminated by '\n'; 导入
三、 pymysql模块
#安装 pip3 install pymysql
(1) 链接、执行sql、关闭(游标)
1 基本使用 # import pymysql # #mysql -h localhost -uroot -p123 # conn=pymysql.connect(host='localhost',user='root',password='',database='day47') # cursor=conn.cursor() #拿到游标,即mysql > # # sql='select * from user where id>1;' # rows=cursor.execute(sql) #拿到受影响的行数 # print('%s rows in set (0.00 sec)' %rows) # # cursor.close() # conn.close()
1.小练习
import pymysql user=input('用户名>>: ').strip() pwd=input('密码>>: ').strip() #链接,拿到游标 conn=pymysql.connect(host='localhost',user='root',password='',database='day47') cursor=conn.cursor() #拿到游标,即mysql > #执行sql sql='select * from user where user="%s" and password="%s";' %(user,pwd) print(sql) rows=cursor.execute(sql) #拿到受影响的行数 # print('%s rows in set (0.00 sec)' %rows) cursor.close() conn.close() if rows: print('登录成功') else: print('登录失败')
#3:sql注入 import pymysql user=input('用户名>>: ').strip() pwd=input('密码>>: ').strip() conn=pymysql.connect(host='localhost',user='root',password='',database='day47') cursor=conn.cursor() sql='select * from user where user="%s" and password="%s";' %(user,pwd) print(sql) rows=cursor.execute(sql) cursor.close() conn.close() if rows: print('登录成功') else: print('登录失败')
3:解决sql注入 import pymysql user=input('用户名>>: ').strip() pwd=input('密码>>: ').strip() conn=pymysql.connect(host='localhost',user='root',password='',database='day47') cursor=conn.cursor() sql='select * from user where user=%s and password=%s;' rows=cursor.execute(sql,[user,pwd]) print(rows) cursor.close() conn.close() if rows: print('登录成功') else: print('登录失败')
4 增删改 import pymysql conn=pymysql.connect(host='localhost',user='root',password='',database='day47',charset='utf8') cursor=conn.cursor() sql='insert into user(user,password) values(%s,%s);' rows=cursor.execute(sql,('alex','123')) rows=cursor.executemany(sql,[('yuanhao','123'),('laowu','123'),('kgf','12323')]) print('%s row in set (0.00 sec)' %rows) conn.commit() cursor.close() conn.close()
5 查:fetchone,fetchmany,fetchall import pymysql conn=pymysql.connect(host='localhost',user='root',password='',database='day47',charset='utf8') cursor=conn.cursor() sql='select * from user;' rows=cursor.execute(sql) 查单条 res1=cursor.fetchone() res2=cursor.fetchone() res3=cursor.fetchone() print(res1[0]) print(res2) print(res3) 查多条 print(cursor.fetchmany(3)) print(cursor.fetchone()) 查所有 print(cursor.fetchall()) print(cursor.fetchone()) 光标的移动 print(cursor.fetchall()) cursor.scroll(1,mode='absolute') print(cursor.fetchone()) cursor.scroll(3,mode='absolute') print(cursor.fetchone()) print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(-2,mode='relative') print(cursor.fetchone()) print('%s row in set (0.00 sec)' %rows) cursor.close() conn.close()
四、获取插入的最后一条数据的自增ID
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
import pymysql conn=pymysql.connect(host='localhost',user='root',password='123',database='egon') cursor=conn.cursor() sql='insert into userinfo(name,password) values("xxx","123");' rows=cursor.execute(sql) conn.commit() print(cursor.lastrowid) #在commit之前和之后都可以查看 cursor.close() conn.close()