python操作MySQL

一、python操作MySQL。

首先调用pymysql模块

import pymysql

连接

conn = pymysql.connect(
    host = '127.0.0.1',
    port = 3306,
    user = 'root',
    password = '123456',
    database = 'day38',
    charset = 'utf8'  # 编码千万不要加-,写成utf-8会直接报错
)

产生一个游标对象

cursor = conn.cursor(pymysql.cursors.DictCursor)  # 产生一个游标对象
# DictCursor 以字典的形式反馈查询出来的数据,键是表的字段,值是表的字段对应的信息

cursor.execute 执行传入sql语句

sql = 'select * from teacher'
cursor.execute(sql)  # 执行传入的sql语句
# print(res)  # res是执行语句返回的数据条数

cursor.fetchone  # 只获取一条数据

cursor.fetchall # 获取所有数据,返回结果是一个列表

cursor.scroll(x,'absolute')  # 控制光标移动,相对起始位置往后移动

cursor.scroll(x,'relative')   # 相对当前位置,往后移动

print(cursor.fetchone())  # 只获取一条数据

cursor.scroll(1,'absolute')  # 控制光标移动,absolute相对于起始位置,往后移动几位

# cursor.scroll(2,'relative')  # relative 相对于当前位置,往后移动几位

print(cursor.fetchall())  # 获取所有的数据,返回的结果是一个列表

 

二、 sql注入问题

  就是利用注释等具有特殊意义的符号来完成一些骚操作

mport pymysql

conn = pymysql.connect(
    host = '127.0.0.1',
    port = 3306,
    user = '123456',
    database = 'day38',
    charset = 'utf8' ,
    autocommit = True  # 这个参数配置完成后,增删改操作都不需要手动加conn.commit 了

)
cursor = conn.cursor(pymysql.cursors.DictCursor)

# sql = 'insert into user(name,password) values("jerry","666")'
# sql = 'update user set name = "jason" where id = 1'
# sql = 'delete from user where id = 6'
# cursor.execute(sql)


'''
增删改操作,都必须加一句
conn.commit() 操作
'''

username = input('username>>>:')
password = input('password>>>:')

sql = 'select * from user where name =%s and password = %s'

res = cursor.execute(sql,(username,password))  # 能够帮你自动过滤特殊字符号,避免sql注入问题

# excute 能够自动识别sql语句中%s 帮你做替换
if res:
    print(cursor.fetchall())
else:
    print('用户名或密码错误')


'''
sql注入 就是利用注释等具有特殊意义的符号来完成一些骚操作

后续写sql语句,不要手动拼接关键性的数据
而是让excute帮你去做拼接
'''

 

posted @ 2019-08-22 17:19  小王八+1  阅读(142)  评论(0编辑  收藏  举报