MySQL的数据备份以及pymysql的使用

Posted 孟庆健

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的使用的主要内容,如果未能解决你的问题,请参考以下文章

MySQL数据库—— 用户管理pymysql模块

MySQL数据库使用pymysql对数据库进行增删改查

Python之PyMySQL的使用

Python3出现“No module named 'MySQLdb'“问题-以及使用PyMySQL连接数据库

PyMySQL的使用详解

MySQL高级之PyMySQL的使用