1. 程式人生 > >MySQL的數據備份以及pymysql的使用

MySQL的數據備份以及pymysql的使用

rowid oot .sql rom ins toolbar chm rmi ati

一、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的使用