Pymysql连接
时间:2021-06-07 20:05:01
收藏:0
阅读:0
防止sql注入
import pymysql
?
?
def insertsql():
# 建立连接
connection_sql = pymysql.connect(
host=‘localhost‘,
port=3306,
user=‘root‘,
password=‘mysql‘,
db=‘xiaoshuobase‘,
charset=‘utf8‘
)
# 获取游标
cursor = connection_sql.cursor(pymysql.cursors.DictCursor)
str = ‘1‘
# str2 = ‘18‘
sql = ‘select * from book where id >%s ‘
# sql = ‘select name,age,gender,cls_id from students where id >%s and age > %s‘
print(sql)
# 尝试执行代码
try:
cursor.execute(sql, str)
# cursor.execute(sql, [str,str2])
# 获取查询所有的数据
a = cursor.fetchall()
print(a)
connection_sql.commit()
# try中代码有错误进入这里
except Exception as e:
connection_sql.rollback()
raise e
#try里面的代码没有问题进入这里
else:
pass
#无论上面什么结果,都执行这里
finally:
pass
# 关闭游标
cursor.close()
?
?
insertsql()
PyMysql 封装
import pymysql
?
?
# username : adil
# password : helloyyj
?
?
class DataBaseHandle(object):
‘‘‘ 定义一个 MySQL 操作类‘‘‘
?
def __init__(self, host, username, password, database, port):
‘‘‘初始化数据库信息并创建数据库连接‘‘‘
# 下面的赋值其实可以省略,connect 时 直接使用形参即可
self.host = host # 本机
self.username = username # 用户名(root)
self.password = password # 密码
self.database = database # 数据库名字
self.port = port # 端口号
self.db = pymysql.connect(
host=self.host,
user=self.username,
password=self.password,
db=self.database,
port=self.port,
charset="utf8"
?
)
self.cursor = self.db.cursor(pymysql.cursors.DictCursor)
?
?
?
?
?
?
def insertDB(self, sql):
‘‘‘ 插入数据库操作 ‘‘‘
?
?
try:
# 执行sql
self.cursor.execute(sql)
?
# tt = self.cursor.execute(sql) # 返回 插入数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
?
# query = ‘insert into 表名(列名1, 列名2, 列名3, 列名4, 列名5, 列名6) values(%s, %s, %s, %s, %s, %s)‘
# self.cursor.execute(sql)
?
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close()
?
def deleteDB(self, sql):
‘‘‘ 操作数据库数据删除 ‘‘‘
?
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 删除数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close()
?
def updateDb(self, sql):
‘‘‘ 更新数据库操作 ‘‘‘
?
?
try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 更新数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close()
?
def selectDb(self, sql):
‘‘‘ 数据库查询 ‘‘‘
?
try:
self.cursor.execute(sql) # 返回 查询数据 条数 可以根据 返回值 判定处理结果
?
data = self.cursor.fetchall() # 返回所有记录列表
?
print(data)
?
# 结果遍历
for row in data:
name = row["name"]
state = row["state"]
# 遍历打印结果
print(‘state = %s, name = %s‘ % (state, name))
except:
print(‘Error: unable to fecth data‘)
finally:
self.cursor.close()
?
def closeDb(self):
‘‘‘ 数据库连接关闭 ‘‘‘
self.db.close()
?
?
if __name__ == ‘__main__‘:
DbHandle = DataBaseHandle(‘localhost‘, ‘root‘, ‘mysql‘, ‘xiaoshuobase‘, 3306)
?
DbHandle.insertDB("insert into book (name,age,gender) values (‘随便起名‘,19,‘男‘)")
# DbHandle.deleteDB("delete from book where name=‘水浒传‘")
# DbHandle.selectDb("select * from book where id > 1")
?
?
?
DbHandle.closeDb()
调用
from utils1 import DataBaseHandle
?
db = DataBaseHandle(‘localhost‘, ‘root‘, ‘mysql‘, ‘xiaoshuobase‘, 3306)
db.selectDb("select * from book where id > 1")
db.insertDB("insert into book values (7,‘‘随便‘,null,0,null )") #添加的数据要和数据库字段匹配
评论(0)