python_如何通过twisted实现数据库异步插入?
如何通过twisted实现数据库异步插入?
1. 导入adbapi
2. 生成数据库连接池
3. 执行数据数据库插入操作
4. 打印错误信息,并排错
#!/usr/bin/python3 __author__ = 'beimenchuixue'
__blog__ = 'http://www.cnblogs.com/2bjiujiu/' import pymysql
from twisted.enterprise import adbapi
from twisted.internet import reactor def go_insert(cursor, sql):
# 对数据库进行插入操作,并不需要commit,twisted会自动帮我commit
try:
for i in range(10):
data = str(i)
cursor.execute(sql, data)
except Exception as e:
print(e) def handle_error(failure):
# 打印错误
if failure:
print(failure) if __name__ == '__main__':
# 数据库基本配置
db_settings = {
'host': 'localhost',
'db': 'jobole',
'user': 'root',
'password': 'passwort',
'charset': 'utf8',
'use_unicode': True
}
# sql语句模版
insert_sql = 'insert into test_1(text_1) value(%s)' # 普通方法插入数据
# conn = pymysql.connect(**db_settings)
# cursor = conn.cursor()
# cursor.execute(insert_sql, '1')
# conn.commit() try:
# 生成连接池
db_conn = adbapi.ConnectionPool('pymysql', **db_settings)
# 通过连接池执行具体的sql操作,返回一个对象
query = db_conn.runInteraction(go_insert, insert_sql)
# 对错误信息进行提示处理
query.addCallbacks(handle_error)
except Exception as e:
print(e) # 定时,给4秒时间让twisted异步框架完成数据库插入异步操作,没有定时什么都不会做
reactor.callLater(4, reactor.stop)
reactor.run()
python_如何通过twisted实现数据库异步插入?的更多相关文章
- Python-通过twisted实现数据库异步插入?
如何通过twisted实现数据库异步插入? 1. 导入adbapi 2. 生成数据库连接池 3. 执行数据数据库插入操作 4. 打印错误信息,并排错 #!/usr/bin/python3 __auth ...
- twisted(1)--何为异步
早就想写一篇文章,整体介绍python的2个异步库,twisted和tornado.我们在开发python的tcpserver时候,通常只会用3个库,twisted.tornado和gevent,其中 ...
- 转载 twisted(1)--何为异步
Reference: http://www.cnblogs.com/yueerwanwan0204/p/5589860.html 早就想写一篇文章,整体介绍python的2个异步库,twisted和t ...
- java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间
java.sql.Date,java.sql.Time和java.sql.Timestamp三个都是java.util.Date的子类(包装类). java.sql.Date是java.util.Da ...
- 使用JDBC向数据库中插入一条数据
原谅我是初学者,这个方法写的很烂,以后不会改进,谢谢 /** * 通过JDBC向数据库中插入一条数据 1.Statement 用于执行SQL语句的对象 1.1 通过Connection 的 * cre ...
- wpf linq数据库无法插入
最近做wpf应用程序,遇到一个很奇怪的问题,我用代码往数据库里插入数据成功了,但去vs的服务器资源管理器里查看数据库总是最开始的样子,什么都没有插入进去,然后就检查代码,打日志查看sql语句,发现都没 ...
- 向Oracle数据库中插入数据出错:ORA-01036 无效的变量名或数据
向Oracle数据库中插入数据出错: 经过排查,因为Update数据时没有出错,所以OracleHelper没有问题: 看异常信息提示:无效的变量和数据,应该是SQL语句的问题,调试时所传的实例Use ...
- Oracle数据库中插入日期型数据(to_date的用法)(转载)
往Oracle数据库中插入日期型数据(to_date的用法) INSERT INTO FLOOR VALUES ( to_date ( '2007-12-20 18:31:34' , 'YYY ...
- 对比Tornado和Twisted两种异步Python框架
做Python的人,一定知道两个性能优秀的异步网络框架:tornado,和twisted. 那么,这两个著名的框架,又有什么异同呢?tornado和twisted,我都用在几个游戏项目中,做过后端,觉 ...
随机推荐
- September,开启一个新的征程!
寻找梦里的未来笑对现实的无奈不能后退的时候不再傍徨的时候永远向前 路...一直都在
- android官网文档学习笔记
1.android的四大组件的了大概功能 activity:负责显示界面,和用户交互. service:运行在后台. content provider:为程序app之间的数据访问提供接口. broad ...
- Java基础(五)-Java序列化与反序列化
.output_wrapper pre code { font-family: Consolas, Inconsolata, Courier, monospace; display: block !i ...
- Python Tornado篇
Tornado既是一个web server,也是web framework.而它作为web server 采用的是asynchronous IO的网络模型,这是一种很高效的模型. Tornado 和现 ...
- Vista 及后续版本的新线程池
在上一篇的博文中,说了下老版本的线程池,在Vista之后,微软重新设计了一套线程池机制,并引入一组新的线程池API,新版线程池相对于老版本的来说,它的可控性更高,它允许程序员自己定义线程池,并规定线程 ...
- JAVA实现跳一跳辅助程序之虎啸龙吟
前序: 今天有幸,看到2位博主的文章,在此表示感谢.自己也动手实现了一下. 实现原理 请参考博主 https://www.cnblogs.com/dongkuo/p/8285162.html 另感谢博 ...
- SP3精密星历简介
IGS精密星历采用sp3格式,其存储方式为ASCII文本文件,内容包括表头信息以及文件体,文件体中每隔15 min给出1个卫星的位置,有时还给出卫星的速度.它的特点就是提供卫星精确的轨道位置.采样率为 ...
- 什么时候可以用delete替代delete[]
针对gcc编译器 C++内存分配和释放函数 //分配单个对象 operator new(std::size_t size) //分配数组对象 operator new[](std::size_t si ...
- 【Core2.0帮助类】
缓存帮助类(CacheHelper) /// <summary> /// 缓存帮助类 /// </summary> public class CacheHelper {//下载 ...
- 在 .NET 中,扫描局域网服务的实现
在最近负责的项目中,需要实现这样一个需求:在客户端程序中,扫描当前机器所在网段中的所有机器上是否有某服务启动,并把所有已经启动服务的机器列出来,供用户选择,连接哪个服务.注意:这里所说的服务事实上就是 ...