我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python的SanicDB有什么作用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python的SanicDB有什么作用

本篇内容主要讲解“Python的SanicDB有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的SanicDB有什么作用”吧!

SanicDB 是为 Python的异步 Web 框架 Sanic 方便操作MySQL而开发的工具,是对 aiomysql.Pool 的轻量级封装。Sanic 是异步IO的Web框架,同时用异步IO读写MySQL才能更好发挥它的效率。虽然这个模块叫做 SanicDB,但是它可以用在任何异步IO操作MySQL的地方。

SanicDB的灵感来源于tornado里面的对MySQLdb(MySQL的C语言接口的Python封装)的操作,后来tornado把它去除了,就有人把这部分代码写成一个单独的模块叫做 torndb,torndb是对python-mysql的封装,不能进行异步操作。但是它很简洁,用起来已经非常习惯了。

在用Sanic的时候,发现有异步IO的aiomysql可以用,但是用起来还有点麻烦,于是就着手对aiomysql进行封装,既然aiomysql支持连接池,那就直接封装aiomysql.Pool吧。

首先,看看它的初始化

class SanicDB:"""A lightweight wrapper around aiomysql.Pool for easy to use"""def __init__(self, host, database, user, password, loop=None, sanic=None, minsize=3, maxsize=5, return_dict=True, pool_recycle=7*3600, autocommit=True, charset = "utf8mb4", **kwargs):'''

前面4个参数是对应数据库的;

loop 是你的应用程序中的事件循环(event_loop);

sanic 是你的Sanic 应用中的sanic 对象;

loop 和 sanic 两者只需提供一个即可,当同时存在时,连接数据库其实用的是sanic里面的loop,这在__init__()代码中可以看到。

minisize 和 maxsize 是连接池的个数限制;

return_dict 是返回的数据一条记录为一个dict,key是MySQL表的字段名,value是字段的值;

pool_recycle 是连接池重连的时间间隔,MySQL默认的连接闲置时间是8小时;

对MySQL的读写操作方法:

async def query(self, query, *parameters, **kwparameters):

async def execute(self, query, *parameters, **kwparameters):

async def get(self, query, *parameters, **kwparameters):

从代码中可以看到,以上三个函数都是调用的cursor的execute() 执行 SQL 命令,但是query(), get() 用于读操作返回数据,query返回全部数据(list),get只返回一条数据。

execute() 方法用来执行写操作,返回受影响的行ID。

上面三个函数都是一样的:

query 是要执行的SQL语句, 后面两个参数是用来参数化执行sql语句的。参数化执行sql是为了防止SQL注入的,那么参数化执行SQL是什么意思呢,举个例子就目标了。

比如,进行用户登录时,我们要执行一条SQL,Python拼接SQL如下:

sql = "select * from user where name='%s' and password='%s'" % (input_name, input_password)

input_name 和 input_password 都是用户输入的,如果用户想捣鬼,他把input_name 输入成 “ ‘ or 1 = 1 –”,拼接出来的sql就成了:

select * from user where name='' or 1 = 1 --' and password='anything'

or 后面的 1=1 就是True,而 — 后面都成了注释,这条语句不管input_name, input_password 是什么都可以执行,通过用户验证,达到了注入目的。

参数化执行SQL就是把拼接SQL的任务交给SanicDB(实际上是它后的aiomysql后面的pymysql),我们只把要拼接的参数当做*parameters传给读写方法即可:

mydb.query("select * from user where user=%s and password=%s", input_name, input_password)

更高级的封装:

query(), get(), execute() 就是基本的操作,在此基础上,做了进一步封装,让写应用更方便:

# 检查一个table中是否含有某字段为某值的记录async def table_has(self, table_name, field, value): # 把一个item插入一个表,item为dict,key是字段名,# ignore_duplicated为True时,遇到唯一索引重复时不报错async def table_insert(self, table_name, item, ignore_duplicated=True): # 更新一个table的记录,updates是dict,key为字段名async def table_update(self, table_name, updates, field_where, value_where):

到此,相信大家对“Python的SanicDB有什么作用”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python的SanicDB有什么作用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python的SanicDB有什么作用

本篇内容主要讲解“Python的SanicDB有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的SanicDB有什么作用”吧!SanicDB 是为 Python的异步 Web
2023-06-02

python有什么作用

python 是一种功能强大的高级编程语言,广泛应用于:数据科学和机器学习web 开发自动化和脚本处理人工智能科学计算教育和研究Python 的强大功能Python 是一种功能强大且用途广泛的高级编程语言,凭借其易读性、可扩展性和高效性,
python有什么作用
2024-04-20

Python中的Python-tesseract有什么作用

这篇文章主要介绍“Python中的Python-tesseract有什么作用”,在日常操作中,相信很多人在Python中的Python-tesseract有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-06-02

python中的tokenize有什么作用

在Python中,tokenize的作用是将文本分解为独立的词或符号,称为“标记”。这些标记可以是单词、句子、段落或更大的文本单位,具体取决于应用程序的需求。tokenize的主要作用有:1. 分词:将文本分解为单词(token),以便进行
2023-08-18

Python中的Dask有什么作用

本篇内容主要讲解“Python中的Dask有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中的Dask有什么作用”吧!前言Python由于其易用性而成为最流行的语言,它提供了
2023-06-16

Python Wheels有什么作用

这篇文章主要讲解了“Python Wheels有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python Wheels有什么作用”吧!Python .whl文件(或wheels)是
2023-06-27

Python的turtle模块有什么作用

Python的turtle模块是一个图形化模块,可以用来绘制简单的图形、动画和游戏。它提供了一组用于控制一个小海龟图形的指令,通过这些指令可以控制海龟在屏幕上移动、绘制图形等操作。turtle模块可以帮助初学者更好地理解编程概念,同时也适用
2023-08-20

Python的pass语句有什么作用

这篇“Python的pass语句有什么作用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python的pass语句有什么作用
2023-06-27

python中的函数有什么作用

本篇内容介绍了“python中的函数有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、函数的价值主要体现在调用时,而非定义时。调用
2023-06-30

Python的__name__变量有什么作用

本篇内容主要讲解“Python的__name__变量有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的__name__变量有什么作用”吧!我知道大家肯定不止一次在Python
2023-06-01

Python Audio tools有什么作用

这篇文章主要讲解了“Python Audio tools有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python Audio tools有什么作用”吧!Python Audio
2023-06-02

Python中的milter模块有什么作用

这篇文章主要介绍“Python中的milter模块有什么作用”,在日常操作中,相信很多人在Python中的milter模块有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的milter模
2023-06-02

Python的RIA框架Pyjs有什么作用

本篇内容介绍了“Python的RIA框架Pyjs有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Pyjs 是用于Web和桌面的 RI
2023-06-02

python中函数有什么作用

python中函数有什么作用?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python的数据类型有哪些?python的数据类型:1. 数字类型,包括int(整型)、long(长
2023-06-14

Python的math包和random包有什么作用

本篇内容主要讲解“Python的math包和random包有什么作用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python的math包和random包有什么作用”吧!math包math包主要
2023-06-02

python中filter函数有什么作用

在Python中,filter()函数用于过滤序列中的元素,返回一个符合条件的新序列。filter()函数接受两个参数,第一个参数是一个函数(通常是lambda函数),用于对序列中的每个元素进行判断,返回True表示保留该元素,返回Fal
python中filter函数有什么作用
2024-02-29

Python中Pandas方法有什么作用

本篇内容介绍了“Python中Pandas方法有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!pandas.cut(x, bins,
2023-06-02

Python中__new__方法有什么作用

本篇内容介绍了“Python中__new__方法有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、__new__方法简介接下来通过
2023-07-06

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录