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文件的调 ...
随机推荐
- 多线程(四) AQS底层原理分析
J.U.C 简介 Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发 场景中使用的组件.比如线程池.阻塞队列.计时器.同步器.并发集合等等.并 发包的作者 ...
- 牛客多校第五场B generator1(十进制矩阵快速幂)题解
题意: 已知 \(X_i = a * X_{i - 1} + b * X_{i - 2}\),现给定\(X_0,X_1,a,b\),询问\(X^n \mod p\),其中\(n <= 10^{1 ...
- 2019牛客多校第二场E MAZE(线段树 + 矩阵)题解
题意: n * m的矩阵,为0表示可以走,1不可以走.规定每走一步只能向下.向左.向右走.现给定两种操作: 一.1 x y表示翻转坐标(x,y)的0.1. 二.2 x y表示从(1,x)走到(n,y) ...
- Cocos Creator 游戏开发
Cocos Creator 游戏开发 https://www.cocos.com/products#CocosCreator 一体化编辑器: 包含了一体化.可扩展的编辑器,简化了资源管理.游戏调试和预 ...
- Google Meet & gmail & video conference
Google Meet & gmail & video conference Conv-2019 & live stream Google Meet https://meet. ...
- nodejs package.json中的exports
test/package.json { "name": "test", "main": "index.js", &quo ...
- JDK环境解析,安装和目的
目录 1. JDK环境解析 1.1 JVM 1.2 JRE 1.3 JDK 2. JDK安装 2.1 为什么使用JDK8 2.1.1 更新 2.1.2 稳定 2.1.3 需求 2.2 安装JDK 2. ...
- Java如何保证文件落盘?
本文转载自Java如何保证文件落盘? 导语 在之前的文章Linux/UNIX编程如何保证文件落盘中,我们聊了从应用到操作系统,我们要如何保证文件落盘,来确保掉电等故障不会导致数据丢失.JDK也封装了对 ...
- [C语言学习笔记五]复合语句和操作符的区分
复合语句的概念和用法 在部分时候,语句必须要与其他语句相结合才能实现应有的功能.放在花括号 {} 里的代码叫做复合语句. 例如: int a,b; if (a == b) ... ... /* 这一部 ...
- 维格表2月更新:智能图表上线,唤醒全量工作数据堪比AI
你是否曾经想过,你的维格表数据有朝一日变化出如科幻电影般的数据图表? 你是否感到厌倦,对当前的后台系统密密麻麻的数据累觉不爱? 你是否一直期待,拥有一个专属大数据 BI 看板,让你的规划如有神助,挥斥 ...