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 ' '; 导出

 


导入
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 ' '; 导入

 

 三、 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

MySQL的数据备份以及pymysql的使用
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()