当前位置: 首页 > 编程笔记 >

Tornado中database模块被取消的替代方法

凌伟泽
2023-03-14
本文向大家介绍Tornado中database模块被取消的替代方法,包括了Tornado中database模块被取消的替代方法的使用技巧和注意事项,需要的朋友参考一下

准备用用tornado重写本站,但发现import tornado.database时出错。


[root@lee ~]# python

Python 2.7.4 (default, Apr 11 2013, 17:08:33) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import tornado.web

>>> import tornado.database

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

ImportError: No module named database

>>>

网上不少教程明明写的是这个模块,怎么会提示找不到这个模块呢?难道我没有安装MySQLdb的原因?

[root@lee tornado]# python

Python 2.7.4 (default, Apr 11 2013, 17:08:33) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import MySQLdb

>>> 

MySQLdb模块已经装好了,看来不是MySQLdb模块引起的。我又重装了一次tornado,结果还是没有database模块。

Python的模块就是一个py文件,我倒tornado目录去看了看,果然没有database.py这个模块:


[root@lee ~]# find /usr -name tornado 

/usr/lib/python2.6/site-packages/tornado-3.0.1-py2.6.egg/tornado

/usr/local/lib/python2.7/site-packages/tornado-3.0.1-py2.7.egg/tornado

/usr/local/lib/python2.7/site-packages/tornado

[root@lee ~]# cd /usr/local/lib/python2.7/site-packages/tornado

[root@lee tornado]# ls

auth.py              escape.pyc      __init__.pyc  netutil.pyc            tcpserver.py   web.pyc

auth.pyc             gen.py          ioloop.py     options.py             tcpserver.pyc  websocket.py

autoreload.py        gen.pyc         ioloop.pyc    options.pyc            template.py    websocket.pyc

autoreload.pyc       httpclient.py   iostream.py   platform               template.pyc   wsgi.py

ca-certificates.crt  httpclient.pyc  iostream.pyc  process.py             test           wsgi.pyc

concurrent.py        httpserver.py   locale.py     process.pyc            testing.py

concurrent.pyc       httpserver.pyc  locale.pyc    simple_httpclient.py   testing.pyc

curl_httpclient.py   httputil.py     log.py        simple_httpclient.pyc  util.py

curl_httpclient.pyc  httputil.pyc    log.pyc       stack_context.py       util.pyc

escape.py            __init__.py     netutil.py    stack_context.pyc      web.py

[root@lee tornado]#


于是到tornado官网看了看文档,原来是tornado3.0版本以后废除database模块,但推出了一个类似database的模块torndb,我看了下源码基本就是MySQLdb的简单封装。
下载torndb,https://github.com/bdarnell/torndb
安装:

[root@lee software]# unzip torndb-master.zip 

Archive:  torndb-master.zip

ab862d70f293304f3a37527dff549eb6818063f7

   creating: torndb-master/

  inflating: torndb-master/.gitignore  

  inflating: torndb-master/README.rst  

   creating: torndb-master/doc/

  inflating: torndb-master/doc/Makefile 

  inflating: torndb-master/doc/conf.py  

  inflating: torndb-master/doc/index.rst  

  inflating: torndb-master/setup.py  

  inflating: torndb-master/torndb.py  

  inflating: torndb-master/tox.ini   

[root@lee software]# cd torndb-master

[root@lee torndb-master]# ls

doc  README.rst  setup.py  torndb.py  tox.ini

[root@lee torndb-master]# python setup.py build

running build

running build_py

creating build

creating build/lib

copying torndb.py -> build/lib

[root@lee torndb-master]# python setup.py install

running install

running build

running build_py

running install_lib

copying build/lib/torndb.py -> /usr/local/lib/python2.7/site-packages

byte-compiling /usr/local/lib/python2.7/site-packages/torndb.py to torndb.pyc

running install_egg_info

Writing /usr/local/lib/python2.7/site-packages/torndb-0.1-py2.7.egg-info

[root@lee torndb-master]#


安装好了试试能不能倒入torndb模块

[root@lee torndb-master]# python

Python 2.7.4 (default, Apr 11 2013, 17:08:33) 

[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import torndb

>>>

OK,搞定。
其实使用torndb与直接使用MySQLdb模块操作数据库都一样,看个人喜好
关于torndb的文档请看这里:http://torndb.readthedocs.org/en/latest/

 类似资料:
  • 问题内容: 在不深入了解 为什么 的细节的情况下,我正在寻找一种干净的(尽可能)的方法来替换可加载模块中的内核函数和系统调用。我最初的想法是编写一些代码来覆盖某些功能,这些功能将采用原始功能(可能的话, 调用 该功能),然后添加一些自己的代码。关键是我编写的函数必须具有原始函数的名称,因此其他代码在尝试访问它时将改为访问我的函数。 通过将代码放入适当的函数中,我可以轻松地(相对地)直接在内核中执行

  • 我一直在通过Netbeans使用CodeNameOne设计一个应用程序,并遇到了一些问题,特别是“找不到符号”编译错误。经过进一步的研究,我发现这是由于CNO不支持某些库/杂项。 我想知道是否有其他方法可以使用以下库/执行任务: (从文件读取)导入java.io.file;符号:类文件位置:package java.io (抛出FileNotFoundException)导入java.io.Fil

  • 问题内容: ️ 2020年6月23日编辑:从Xcode 12开始,ViewBuilder将同时支持switch和let语句! 我一直在尝试使用SwiftUI复制我的应用程序。它有一个RootViewController,根据枚举值,它显示了一个不同的子视图控制器。与在SwiftUI中一样,我们使用视图而不是视图控制器,我的代码如下所示: 不幸的是,我收到警告: 包含控制流语句的闭包不能与funct

  • 问题内容: NetBeans中是否有用于突出显示代码块并对其进行注释/取消注释的快捷方式? 问题答案: 键盘快捷键列表可以在NetBeans Wiki中找到。 打开/关闭搜索结果突出显示 + + 添加/删除评论。 应该适用于所有语言 + 或在Mac +中

  • 由于使用了容器模式来组织各模块的实例,意味着你可以比较容易的替换掉已经有的服务,以公众号服务为例: <...> $app = Factory::officialAccount($config); $app->rebind('request', new MyCustomRequest(...)); 这里的 request 为 SDK 内部服务名称。

  • 问题内容: 我从没想过会发生这种情况,但是遇到了我的第一个Java错误: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5003595 我几乎与错误(在Linux上为NFS)中描述的情况完全相同,并且我看到File.exists()没有返回正确的值(至少不是立即返回)。 所以我的问题是,这种检查文件是否存在的方法是否可以替代?如果可能的话,我