文档章节

一个简单的python(tornado + sqlalchemy)web小例子

MinghanSui
 MinghanSui
发布于 2017/06/20 10:46
字数 389
阅读 182
收藏 0

①初始化数据库连接,默认创建一个Book表

# coding=utf-8
from sqlalchemy import Column, create_engine, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 初始化数据库连接:
engine = create_engine('mysql+mysqlconnector://root:root@localhost:3306/dbName?charset=utf8',
                       encoding="utf-8",
                       echo=True)
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)

# 生成orm基类
Base = declarative_base()


class Book(Base):
    __tablename__ = 'book'
    id = Column(Integer, primary_key=True)
    book_name = Column(String(200))
    author = Column(String(200))


Base.metadata.create_all(engine)

②定义一个BaseHandle用来操作数据库

# coding=utf-8
import tornado.web

from db import DBSession


class Base_handle(tornado.web.RequestHandler):
    def initialize(self):
        self.db = DBSession()

③一个简单的restful风格的web小程序,这里就不多说了。。。

# coding=utf-8
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import os.path

from tornado.options import define, options
from baseHandle import Base_handle
from db import Book

define("port", default=8000, help="run on the given port", type=int)


class MainHandler(Base_handle):
    def get(self, book_name):
        books = self.db.query(Book).filter(Book.book_name == book_name).all()
        self.render("book.html", books=books)

    def post(self, book_name):
        self.get(book_name)


class Application(tornado.web.Application):
    def __init__(self):
        handlers = [
            (r"/book/([0-9a-zA-Z\-\_]+)", MainHandler),
        ]
        settings = dict(
            cookie_secret="43oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
            login_url="/login",
            template_path=os.path.join(os.path.dirname(__file__), "templates"),
            static_path=os.path.join(os.path.dirname(__file__), "static"),
            xsrf_cookies=True,
        )
        tornado.web.Application.__init__(self, handlers, **settings)


def main():
    tornado.options.parse_command_line()
    http_server = tornado.httpserver.HTTPServer(Application())
    http_server.listen(options.port)
    tornado.ioloop.IOLoop.instance().start()


if __name__ == "__main__":
    main()

④页面代码。。。没啥代码。。。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Tornado Book Demo</title>
</head>
<body>
<div id="body">
    <table>
        <thead>
        <tr>
            <th>编号</th>
            <th>书本名称</th>
            <th>书本作者</th>
        </tr>
        </thead>
        <tbody>
        {% for bk in books %}
        <tr>
            <td>{{bk.id}}</td>
            <td>{{bk.book_name}}</td>
            <td>{{bk.author}}</td>
        </tr>
        {% end %}
        </tbody>
    </table>
</div>
</body>
</html>

⑤项目的结构

⑥数据库数据

之后就可以通过页面访问这个web接口了:

© 著作权归作者所有

MinghanSui
粉丝 2
博文 50
码字总数 15360
作品 0
沈阳
程序员
私信 提问
Python之使用Pandas库实现MySQL数据库的读写

  本次分享将介绍如何在Python中使用Pandas库实现MySQL数据库的读写。首先我们需要了解点ORM方面的知识。 ORM技术   对象关系映射技术,即ORM(Object-Relational Mapping)技术,指的是...

jclian91
2018/04/06
0
0
SQLAlchemy 和其他的 ORM 框架

Python ORM 概览 作为一个美妙的语言,Python 除了 SQLAlchemy 外还有很多ORM库。在这篇文章里,我们将来看看几个流行的可选 ORM 库,以此更好地窥探到Python ORM 境况。通过写一段脚本来读写...

oschina
2014/05/03
20.8K
6
[flask-SQLAlchemy]关于flask-SQLAlchemy的初级使用教程

鉴于网上关于flask-SQLAlchemy的实例使用教程参差不齐,于此写下工作学习过程中的使用过程,以便分享交流。 对于python关于flask有一定了解的高端玩家来说,请转至flask官方开发文档。 一.安...

yzy121403725
2018/05/24
0
0
Flask Web开发新手指南

Flask框架是Python开发的一个基于Werkzeug和Jinja 2的web开发微框架,它的优势就是极其简洁,但又非常灵活,而且容易学习和应用。因此Flask框架是Python新手快速开始web开发最好的选择,此外...

汇智网教程
2018/12/10
136
0
IronPython通过pypyodbc使用SQLAlchemy的方法

SQLAlchemy是目前在Python界大热的技术,但由于IronPython数据库接口库的缺乏,IronPython却一直无法使用此神器。 现在,借助于纯Python的ODBC接口库pypyodbc,通过简单扩展SQLAlchemy,Iro...

派派技术小组
2013/03/07
425
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
4
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
9
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
7
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
8
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部