MySQL的數據備份以及pymysql的使用
一、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
二、表的導出和導入
表的導出和導入
(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
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()
MySQL的數據備份以及pymysql的使用