网站没有百度权重,建筑设计公司属于什么行业类别,网站建设中的html页面,wordpress网站seo设置1.pymysql基本使用
打开数据库连接,使用cursor()方法获取操作游标执行SQL语句 获取命令执行的查询结果
1.1 打开数据库连接
# 打开数据库连接
db pymysql.connect(host127.0.0.1,userroot,port3306,password123,databasedb5)
1.2 使用cursor()方法获取操作游…1.pymysql基本使用
打开数据库连接,使用cursor()方法获取操作游标执行SQL语句 获取命令执行的查询结果
1.1 打开数据库连接
# 打开数据库连接
db pymysql.connect(host127.0.0.1,userroot,port3306,password123,databasedb5)
1.2 使用cursor()方法获取操作游标
cursor()方法获取操作游标,同时可以指定参数cursorpymysql.cursors.DictCursor将查询结果以字典的形式返回.不添加的时候,查询的结果以元祖返回
# 使用cursor()方法获取操作游标
cursor db.cursor(cursorpymysql.cursors.DictCursor)
1.3 执行SQL语句
执行sql语句之后,返回的是当前sql语句影响的行数
# 定义SQL语句
sql select * from emp;
# 执行SQL语句
res cursor.execute(sql) # 返回的是当前sql语句影响的行数
# print(res) 10
1.4 获取命令执行的查询结果
这三条方法读取数据类似于文件光标的移动,移动到位置之后只能够读取之后的数据.同时可以使用cursor.scroll(1). cursor.scroll(1,absolute)改变游标所在的位置
cursor.fetchone(),获取一条数据cursor.fetchall(),获取所有数据cursor.fetchmany(5),可以指定拿几条cursor.scroll(1),相对于光标所在的位置继续往后移动1cursor.scroll(1,absolute),相对于数据的开头所在的位置继续往后移动1
print(cursor.fetchone()) # 只拿一条
cursor.scroll(1) # 相对于光标所在的位置继续往后移动1
print(cursor.fetchall()) # 拿所有
cursor.scroll(1,absolute) # 相对于数据的开头所在的位置继续往后移动1
print(cursor.fetchmany(5)) # 可以指定拿几条
2.sql注入及解决方法
SQL注入是一种恶意的攻击技术.攻击者通过在用户输入或是其他数据插入点,插入恶意的SQL语句,利用应用程序对用户输入数据验证不足的漏洞,来欺骗数据库执行非预期的命令.
创建users表
create table users(id int primary key,name varchar(16) not null,age int not null
);alter table users add passwd char(16) not null;insert into users values(1,zs,10,123),(2,lisi,12,456),(3,wu,13,3333); sql的语句和输入的参数相关
import pymysql# 打开数据库连接
db pymysql.connect(host127.0.0.1,userroot,port3306,password123,databasedb5)# 使用cursor()方法获取操作游标
cursor db.cursor(cursorpymysql.cursors.DictCursor)cursorpymysql.cursors.DictCursor 将查询结果以字典的形式返回
username input(输入用户名)
passwd input(输入密码)# 定义SQL语句
sql select * from users where name%s and passwd%s%(username,passwd)
print(sql)
# 执行SQL语句
res cursor.execute(sql) # 返回的是当前sql语句影响的行数if res:print(登陆成功!!)print(cursor.fetchall())
else:print(用户名或是密码错误) 恶意输入: 解决方式:
日常生活中很多软件在注册的时候不能含有特殊符号.
敏感的数据不要自己做拼接,书写sql语句时先用%s占位符,之后将需要拼接的数据直接交给execute方法即可
import pymysql# 打开数据库连接
db pymysql.connect(host127.0.0.1,userroot,port3306,password123,databasedb5)# 使用cursor()方法获取操作游标
cursor db.cursor(cursorpymysql.cursors.DictCursor)cursorpymysql.cursors.DictCursor 将查询结果以字典的形式返回
username input(输入用户名)
passwd input(输入密码)# 定义SQL语句
sql select * from users where name%s and passwd%s
print(sql)
# 执行SQL语句
res cursor.execute(sql,(username,passwd)) # 自动识别sql语句里面的%sif res:print(登陆成功!!)print(cursor.fetchall())
else:print(用户名或是密码错误) 3.pymysql基本操作
在Python数据库编程中当游标建立之时就自动开始了一个隐形的数据库事务。
commit()方法游标的所有更新操作rollback方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务.
当前的事务设置的是手动提交,我们要结束事务只能是结束事务或是回滚事务.所以在操作数据的增删改时,都需要提交或是回滚事务,实现的操作才能够对于数据库有效.
# _*_ coding utf-8 _*_
# george
# time: 2024/11/18上午11:03
# name: pymysql基础操作.py
# comment:
import pymysql# 打开数据库连接
db pymysql.connect(host127.0.0.1,userroot,port3306,password123,databasedb5)# 使用cursor()方法获取操作游标
cursor db.cursor(cursorpymysql.cursors.DictCursor)# 增
# sql insert into users values(%s,%s,%s,%s)
#
# res cursor.execute(sql, (4, zl, 15, 2222))
# db.commit() # 确认# 改
# sql2 update users set age%s where name%s
# res2 cursor.execute(sql2, (20, zs))
# print(res2)
# db.commit()# 删
try:sql3 delete from users where id%sres2 cursor.execute(sql3, (4,))db.commit()print(res2)
except:db.rollback()# 查
# sql4 select * from users
# res2 cursor.execute(sql4)
# print(cursor.fetchall())