当前位置:Gxlcms > 数据库问题 > Pymysql连接

Pymysql连接

时间:2021-07-01 10:21:17 帮助过:15人阅读

防止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 )") #添加的数据要和数据库字段匹配
 

  

 

Pymysql连接

标签:utils   plain   执行   注入   from   data   str   初始   init   

人气教程排行