一、python连接MySQL
# ### 1.基本语法 # (1) 创建连接 host user password database 这四个参数必须写 conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db1") # (2) 创建游标对象(该对象可以操作数据库增删改查) cursor = conn.cursor() # (3) 执行sql语句,可写增删改查sql语句 sql = "select * from 表名" # 返回的是数据的总条数 res = cursor.execute(sql) # (4)获取数据 fetchone 获取一条 res = cursor.fetchone() # (5) 释放游标对象 cursor.close() # (6) 关闭连接 conn.close()
二、事务处理
#pymysql 操作事务处理时,需要commit提交数据,才会变化, #否则rollback回滚.恢复到最初状态
三、sql注入
1、sql注入发生的现象
#sql注入的现象 import pymysql user = input("请输入用户名: >>> ").strip() pwd = input("请输入密码: >>> ").strip() conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db0826") cursor = conn.cursor() sql = "select * from usr_pwd where username='%s' and password='%s' " % (user,pwd) print(sql) res = cursor.execute(sql) print(res) # 查询的条数 if res: print("登录成功") else: print("登陆失败") cursor.close() conn.close()
输入时 : sfsdf' or 3=3 -- sdfsd
# -- 后面的字符串都会被注释掉, 前面账号虽然是错的 但是 2=2是真的 绕开了账号和密码的判断;
select * from usr_pwd where username='afasdfasdfasdf' or 2=2 -- sfasdf' and password='3434
2、解决
使用预处理机制,可以避免绝大多数sql注入的问题
execute 如果参数为2个,将默认开启预处理
execute(sql , (参数1,参数2,参数3 .... ) )
import pymysql user = input("请输入用户名: >>> ").strip() pwd = input("请输入密码: >>> ").strip() conn = pymysql.connect(host="127.0.0.1",user="root",password="123456",database="db0826") cursor = conn.cursor() sql = "select * from usr_pwd where username=%s and password=%s" res = cursor.execute(sql, (user,pwd) ) print("登陆成功" if res else "登录失败") cursor.close() conn.close()
四、导入导出
1、导出
#第一步: 先退出数据库 #第二步: 切换到对应的路径 mysqldump -uroot -p 库名> 库名.sql #第三步: # 导出所有内容 mysqldump -uroot -p 库名> 库名.sql # 导出单个表 mysqldump -uroot -p 库名> 库名.sql
2、导入
#第一步 : 先创建一个空的数据库 #第二步 : 找到sql对应文件目录 #第三部步: source 路径/文件 use 数据库 source 文件路径+文件名
五、恢复文件
innodb 在只有frm和ibd文件的情况下,如何恢复数据;
1、安装MySQL Utilities
https://downloads.mysql.com/archives/utilities/
2、cmd中找到frm那个文件,执行如下命令:
切换到对应目录,执行下面语句,不要加分号
mysqlfrm --diagnostic ./文件目录/t1.frm
查出建表语句,复制查询出来的建表语句在mysql中创建的新数据中使用
3、#对已创建的表进行表空间卸载 删除ibd文件
mysql> alter table t1 discard tablespace;
4、对已创建的表进行空间装载
mysql> alter table t1 import tablespace;
标签:python,res,数据库,mysql,cursor,user,sql,password,conn From: https://www.cnblogs.com/songyunjie/p/16858941.html