Python Web(2) Tornado连接mysql数据库_sinat_37623490的博客-程序员宅基地_tornado连接数据库

技术标签: python  tornado  Python  

Tornado有一个自己的操作数据库模块torndb,而torndb是依赖于MySQLdb实现的对MySQL数据库操作,由于python3中不支持MySQLdb,所以这里使用pymysql实现数据库的操作。

pymysql连接数据库

引入模块

import pymysql

建立连接

self.conn = pymysql.connect(host='<ip>', port=<端口>, user='<用户名>', passwd='<用户密码>', db='<数据库名称>')
self.cursor = conn.cursor()

数据库操作

# 插入数据
def write(self):
	insert_one = "a insert SQL"
	self.cursor.execute(insert_one)
	self.conn.commit()
# 查询数据
def get(self):
	select_one = "a select SQL"
	self.cursor.execute(select_one)
	result = self.cursor.fetchone()
	self.conn.commit()
# 关闭连接
def close(self):
	self.cursor.close()
	self.conn.close()

以注册登录事件为例,整合以上内容实现完整功能:

#!/usr/bin/env Python
# coding=utf-8
import sys
import time
import pymysql
from tornado.web import RequestHandler

class LoginHandler(RequestHandler):
    def get(self):
        self.render('login.html')
    
    def post(self, *args, **kwargs):
        username = self.get_argument('username',None)
        password = self.get_argument('password', None)
 
        # 数据库连接
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='chunxiao')
        cursor = conn.cursor()

        select_user = "select name from user where name='%s' and password='%s'"%(username, password)
        effect_row = cursor.execute(select_user)
        result = 0
        if effect_row > 0:
            result = cursor.fetchone()
        conn.commit()
        cursor.close()
        conn.close()
 
        if result:
            self.render('index.html', items=['登录成功!', result[0]])
        else:
            self.render('index.html', items=['登录失败!'])


class RegisterHandler(RequestHandler):
    def get(self):
        self.render('register.html')
    
    def post(self, *args, **kwargs):
        self.username = self.get_argument('username',None)
        password = self.get_argument('password', None)
        comfirm = self.get_argument('comfirm', None)

        if password != comfirm:
            return self.write('密码与确认密码不一致')

        # 数据库连接
        conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='chunxiao')
        cursor = conn.cursor()

        reg_date = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        insert_user = "insert into user(name, password, reg_date) values ('%s', '%s', '%s')"%(self.username, password, reg_date)
        effect_row = cursor.execute(insert_user)
        
        conn.commit()
        cursor.close()
        conn.close()
 
        if effect_row > 0:
            self.render('index.html', items=['注册成功!'])
        else:
            self.render('index.html', items=['注册失败!'])
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sinat_37623490/article/details/114905552

智能推荐

php 省市区县 四级联动,GitHub - yupoxiong/region: ThinkPHP5/6省市区(县)街道四级联动扩展..._Amy青梅的博客-程序员宅基地

ThinkPHP省市区(县)街道四级联动扩展支持 TP5.0.* 和 TP5.1.* 还有 TP6.0 ,搜索功能支持汉字,支持拼音,首字母搜索。安装第一步:安装扩展Composer 运行扩展安装命令composer require yupoxiong/region第二步:创建数据表复制vendor/yupoxiong/region/database/migrations目录下的数据库迁移文件到T...

推荐一个开源辅助网站programcreek_李肖遥的博客-程序员宅基地

关注、星标公众号,直达精彩内容来源:技术让梦想更伟大作者:李肖遥开发中经常遇到api如何使用,或者省略时间可以直接使用一些开源的代码,programcreek很好的解决这个问题,这个网站可...

cas server php下载,关于用CAS Server与Php、Jetty配置实现SSO&#4_吻死破孩的博客-程序员宅基地

最早由Yale开发的CAS在目前开源SSO市场上占据了80%的份额。简单研究了一下,感觉CAS确实比较成熟,认证流程均可通过证书保证安全,也提供了对多种App服务器和开发环境的支持。比较感兴趣的是两个:Php和Jetty,前者较为常用;后者是Hadoop平台内置的Jetty服务器。一、配置Php认证这个相当简单,有人实现了一个PhpCAS库,只需将CAS.php和client.php等三个php文...

[Java]分布式自平衡多文件云传输_你在看什么?的博客-程序员宅基地

[Java]分布式自平衡多文件云传输概述基本思想节点Receiver接收方资源分配及节点选择策略类接收服务器端口池资源请求类短连接资源请求接口资源信息类资源节点关系表(资源管理中心需要维护的Map)字节发送接收类文件片段类断点续传的基础类资源提供者文件接收过程总结概述云计算(cloud computing),分布式计算技术的du一种,其最基本的概念,是透过网zhi络将庞大的计算处理程序自dao动分拆成无数个较小的子程序,再交由多部服务器所组成的庞大系统经搜寻、计算分析之后将处理结果回传给用户。透过这项

vue怎么和python后端交互_新vue axios与python后端连接的程序_weixin_39521009的博客-程序员宅基地

1.安装axios环境与配置npm install --save axios vue-axiosaxios的配置在入口main.js中导入axios 并将axios写入vue的原型,这样就能更简单的使用import axios from 'axios'import VueAxios from 'vue-axios'Vue.use(VueAxios, axios)axios.get()方法axios...

xshell登录到CentOS7上时出现“The remote SSH server rejected X11 forwarding request._lykops的博客-程序员宅基地

其原因是肯能对openssh版本进行了升级。解决方法为: yum install xorg-x11-font* xorg-x11-xauth/etc/ssh/sshd_config文件中X11Forwarding参数为yes再将UseLogin参数为no,可能这一行最开始是被注释,去掉注释即可解决。...

随便推点

BlockManager原理_威少SOS的博客-程序员宅基地

Driver中的Block:Driver &gt; DAGScheduler &gt; BlockManagerMaster &gt; BlockManagerInfo &gt; BlockStatusBlockManagerMaster位置:存在于Driver上功能:负责对各个节点上的BlockManager内部管理的数据的元数据进行维护例如:block的增删改等操作,都会在此维...

这个习惯改变了我的人生_缘茜行的博客-程序员宅基地

文章目录来源故事引出心理学实验为什么?原理方法挑战自己来源本博客内容旨在记录在b站看到的可能有用的一个习惯。up主:帅soserious视频链接:这个习惯改变了我的人生核心提炼:自控力是一个有限的资源,我们每天做的任何事,任何决定,都在消耗这个有限的资源。人的本性就是渴望进步,渴望成长的,所以在你挑战困难事情的过程中,尽管很不舒服,但是你不会再焦虑,而且还会有一种很强的充实感,也许这个过程,才是我们做困难事情的真正意义。行动、灵感和动力相辅相成。从简单的行动开始,往往可以获得更

推荐个漫画神器给大家,兔比兔漫画,免费多源_she420130924的博客-程序员宅基地

漫画可以搜索到多个站的(安卓)http://d.zqapps.com/tubetu(苹果越狱)http://d.zqapps.com/1qwz

这几本测试书籍强烈推荐!还有这必须关注的网站..._测试萌萌的博客-程序员宅基地_测试书籍推荐

关注网站和阅读测试相关书籍,本质上都是为了提升自己。作为一名软件测试人员,哪些网站是你关注的,哪些书籍是你必须要看的呢?

十年架构设计总结!阿里华为等大厂都这么做容器调度和服务编排_JavaEdge.的博客-程序员宅基地

容器运维平台的:镜像仓库解决Docker镜像存储和访问的问题资源调度决定Docker镜像可以分发到哪些机器上这些解决后,就该考虑如何在集群中创建容器,即容器调度。容器创建后如何运作才能对外提供服务,即服务编排。容器调度当服务需要发布的时候,该选择哪些机器部署容器。若集群机器规模上百台,要发布的服务上百个,就不能靠人肉运维,需要有专门容器调度系统,所以很多基于Docker的容器调度系统,比如Swarm、Mesos。Kubernetes。它们能解决哪些问题呢?主机过滤解决容器创建时什

c语言ofstream头文件,C++/C++11中头文件<sstream>介绍_溯源精舍的博客-程序员宅基地

C++使用标准库类来处理面向流的输入和输出:(1)、iostream处理控制台IO;(2)、fstream处理命名文件IO;(3)、stringstream完成内存string的IO。类fstream和stringstream都是继承在类iostream的。输入类都继承自istream,输出类都继承自ostream。因此,可以在istream对象上执行的操作,也可在ifstream或istring...

推荐文章

热门文章

相关标签