python torndb模块
一、torndb概述
torndb是一个轻量级的基于MySQLdb封装的一个模块,其是tornado框架的一部分。其项目主页为:https://github.com/bdarnell/torndb 。从tornado3.0版本以后,其已经作为一个独立模块发行了。可以通过easy_install 或pip的方式直接安装。
二、连接与查询
1、创建连接
- import torndb
- db = torndb.Connection("127.0.0.1:3306", "test", user="root", password="admin")
默认字符集UTF8,没必要在加上 charset = "utf8" 。另外需要注意的是其默认时区为time_zone='+0:00',这个可以手动在连接的时候指定为东8区。
2、查询
在MySQLdb中所有的操作都是通过execute执行的,而把TA封装之后的torndb,提供了3种,execute,get,query。execute的示例:
- cre='create table blog(id int,content text)'
- db.execute(cre)
- string='wawuee'
- exe='insert into blog(id,content)values(%d,"%s")'%(1,string)
- db.execute(exe)
execute包括创建表,插入表,删除表等等,另外其也单独封装了insert、insertmany、update、updatemany函数,同时除了一般的execute函数,其还有execute_lastrowid、execute_rowcount、executemany、executemany_lastrowid、executemany_rowcount函数。
query与get
两个都是用于返回数据结果,不同的是query可以返回多条结果;get查询的结果为空时,返回None,返回多于一条结果时会报出一个异常,一般只用于只有一条结果返回的情况。
- //query查询
- >>>sql = 'SELECT * FROM test WHERE name = %s AND id < %s'
- >>>db.query(sql, 'bbb', 11)
- [{'date': None, 'id': 1L, 'name': u'bbb'}, {'date': None, 'id': 2L, 'name': u'bbb'}]
- //get查询
- >>>sql = 'SELECT * FROM test WHERE id = %s'
- >>>db.get(sql, 2)
- {'date': None, 'id': 2L, 'name': u'bbb'}
query查询时,结果为多行时为list列表,单行只为字典。
insert与insertmany
- >>>sql = "INSERT INTO test (id,name,date) VALUES (%s,%s,%s)"
- >>>db.insert(sql, 100, "aaa", '0000-01-01')
- 100L
insert的参数不支持列表或元组,如果想插入列表或元组的话可以用insertmany
- #插入单行记录
- sql = "INSERT INTO test (id,name,date) VALUES (%s,%s,%s)"
- db.insertmany(sql,[[200,'bbb',None]])
- 200L
- #插入多行记录
- db.insertmany(sql,[[300,'bbb',None],[400,'bbb',None]])
- 400L
- db.insertmany(sql,[(301,'bbb',None),(401,'bbb',None)])
- 401L
总结下,torndb对MySQLdb封装后,query,get返回是list,dict这些,非常方便,可以直接拿来用,这是TA的优点,而且是默认自动commit的,不用MySQLdb的手动commit,用起来很是简洁。更多用法可以参看:http://torndb.readthedocs.org/en/latest/
参考
https://www.it610.com/article/5883669.htm
python torndb模块的更多相关文章
- 基于python3.x,使用Tornado中的torndb模块操作数据库
目前Tornado中的torndb模块是不支持python3.x,所以需要修改部分torndb源码即可正常使用 1.开发环境介绍 操作系统:win8(64位),python版本:python3.6(3 ...
- Python标准模块--threading
1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...
- Python的模块引用和查找路径
模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...
- Python Logging模块的简单使用
前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...
- Python标准模块--logging
1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...
- python基础-模块
一.模块介绍 ...
- python 安装模块
python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...
- python Queue模块
先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...
- python logging模块可能会令人困惑的地方
python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...
随机推荐
- zoj-3872 Beauty of Array (dp)
]Edward has an array A with N integers. He defines the beauty of an array as the summation of all di ...
- Ubuntu下跑通py-faster-rcnn、详解demo运作流程
在不同的服务器不同的机器上做过很多次实验,分别遇到各种不一样的错误并且跑通Py-Faster-RCNN,因此,在这里做一个流程的汇总: 一.下载文件: 首先,文件的下载可以有两种途径: 1.需要在官网 ...
- mybatis(十一)mybatis常见问题
用注解还是用 xml 配置? 常用注解:@Insert.@Select.@Update.@Delete.@Param.@Results. @Result 在 MyBatis 的工程中,我们有两种配置 ...
- NoSQL 数据库案例实战 -- MongoDB数据备份、恢复
MySQL数据迁移到MongoDB数据库中 前言 一.数据备份 二.数据恢复 前言 本环境是基于 Centos 7.8 系统构建mongodb-enterprise-4.2.8学习环境具体构建,请参考 ...
- Battery API All In One
Battery API All In One https://caniuse.com/?search=Battery navigator.getBattery() /* Promise {<pe ...
- React Hooks: useCallback All In One
React Hooks: useCallback All In One useCallback https://reactjs.org/docs/hooks-reference.html#usecal ...
- DRM & 音视频 & 防盗链
DRM & 音视频 & 防盗链 DRM Digital Rights Management / 数字版权管理 https://en.wikipedia.org/wiki/Digital ...
- free useful skills videos courses & tutorials
free useful skills videos courses & tutorials website video courses https://realpython.com/ http ...
- npm published cli package's default install missing the `-g` flag
npm published cli package's default install missing the -g flag https://npm.community/t/npm-publishe ...
- Flutter 1.5
Flutter 1.5 Flutter SDK https://flutter.dev/docs/get-started/install/windows Android SDK This instal ...