码迷,mamicode.com
首页 > 数据库 > 详细

pymysql

时间:2017-09-14 18:31:27      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:注入   else   none   ble   shift   方案   dump   put   游标   

一IDE 可视化工具

二 数据库备份

三pymysql的使用

一IDE 可视化工具

生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具

下载链接:https://pan.baidu.com/s/1bpo5mqj

技术分享
掌握:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 备份库/表

#注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键
View Code

二数据库备份

1.物理备份:直接复制数据库文件,适用于大型数据库环境,但不能恢复到异构系统中。

2.逻辑备份:备份的是建表、建库、出入等操作所执行的SQL 语句,适用于中小型数据库,效率相对比较低。

3.导出表:将表导入到文本文件中。

使用mysqldump实现逻辑备份:

 mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
# 备份单个数据库:
# mysqldump -uroot -p123456. day47 > D:\47.sql
# 备份多个数据库
# mysqldump -uroot -p123456. --databases day47 db43 db42 > D:\47_43_42.sql
#备份所有数据库
# mysqldump -uroot -p123456. --all-databases > D:\all.sql

# 把数据引入数据库内
# (方法一)mysql -uroot -p123456. day47< D:\47.sql
# (方法二)use database day47
SET SQL_LOG_BIN=0;#停止使用日志文件
# source 需要导入数据库的地址
#导入很多数据库
# mysql -uroot -p123456. < D:\47_43_42.sql

注:这些都是在终端的界面上使用

数据库里面的表操作:

# 关于表的操作(把表导出来需要配置下:在 secure_file_priv=‘E:\\‘)
# 导出表
# select * from  user into outfile‘E:\userinfo.txi‘ fields terminated by ‘,‘ lines terminated by ‘\n‘;
# 导入表
load data infile 文件的地址
into table school.student1
fields terminated by ,#定义字段分隔符
optionally enclosed by "#定义字符串使用什么符号括起来
lines terminated by \n; #定义换行符

技术分享

三 pymysql 的使用

1 基本使用

#1 基本使用
# import pymysql
# 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()

2 小练习(判断是否登录成功)

 

# 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 注入及解决方案

#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(‘登录失败‘)
#解决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‘)#设置charset后可以输入中文
# 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()

6 最后一个id号

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‘)])
conn.commit()
print(cursor.lastrowid)#查看最后一个的id号
cursor.close()
conn.close()

 

pymysql

标签:注入   else   none   ble   shift   方案   dump   put   游标   

原文地址:http://www.cnblogs.com/1a2a/p/7521669.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!