用python操作MySql
import pymysql
conn =
pymysql.connect(
host =
'127.0.0.1',
port = 3306
,
user =
'root',
password =
'123',
database =
'db4',
charset =
'utf8',
)
cursor =
conn.cursor(pymysql.cursors.DictCursor)
# 产生一个游标对象 以字典的形式返回结果 键是表的字段 值是字段对应的信息
sql =
'select * from emp'
# 要执行的sql 语句
cursor.execute(sql)
# 提交信息
print(cursor.fetchone())
# 只获取一条数据
print(cursor.fetchone())
print(cursor.fetchone())
# 只获取一条数据
# print(cursor.fetchall())
# 获取所有的数据 返回的结果是一个列表
# print(cursor.fetchmany(6))
# 获取多条数据 返回的结果是一个列表
cursor.scroll(5,
'absolute')
# 控制光标移动 absolute相对于在起始位置 往后移动
# cursor.scroll(5,'relative')
# relative相对于从当前位置往后移动几位
print(cursor.fetchall())
View Code
sql注入问题
import pymysql
conn =
pymysql.connect(
host =
'localhost',
user =
'root',
password =
'123',
database =
'day58',
charset =
'utf8',
# autocommit = True
# 这个参数配置完成后 增删改操作都不需要在手动加conn.commit了
)
cursor =
conn.cursor(pymysql.cursors.DictCursor)
sql =
'select * from students'
cursor.execute(sql)
# print(cursor.fetchone())
"""
增删改操作 都必须加一句
conn.commit()操作
"""
conn.commit()
name = input(
'name>>>:').strip()
class_id = input(
'class_id>>>:').strip()
sql =
"select * from students where name = '%s' and class_id = '%s'"%
(name,class_id)
print(sql)
res =
cursor.execute(sql)
# execute 能够自动识别sql语句中的%s 帮你做替换
if res:
print(cursor.fetchone())
else:
print(
'用户或班级错误')
View Code
解决问题
import pymysql
conn =
pymysql.connect(
host =
'localhost',
user =
'root',
password =
'123',
database =
'day58',
charset =
'utf8',
autocommit =
True
# # 这个参数配置完成后 增删改操作都不需要在手动加conn.commit了
)
course =
conn.cursor(pymysql.cursors.DictCursor)
sql =
'select * from students'
# 提交
course.execute(sql)
name = input(
'name')
class_id = input(
'number')
sql =
'select * from students where name = %s and class_id = %s'
print(sql)
res =
course.execute(sql,(name,class_id))
# 能够帮你自动过滤特殊符号 避免sql注入的问题
if res:
print(course.fetchone())
else:
print(
'用户或班级不对')
"""
sql注入 就是利用注释等具有特殊意义的符号 来完成一些骚操作
后续写sql语句 不要手动拼接关键性的数据
而是让excute帮你去做拼接
"""
View Code
增删改
# 增
sql =
"insert into user(username,password) values(%s,%s)"
rows = cursor.excute(sql,(
'jason',
'123'))
# 修改
sql =
"update user set username='jasonDSB' where id=1"
rows =
cursor.excute(sql)
"""
增和改单单执行excute并不会真正影响到数据,需要再执行conn.commit()才可以完成真正的增改
"""
# 一次插入多行记录
res = cursor,excutemany(sql,[(),(),()]
View Code
转载于:https://www.cnblogs.com/komorebi/p/11396459.html