flask + MySQL-python 创建 webapp 应用
0 - python 用自带的 wgsi 也可以创建 web 服务
1)建立 hello.py 内容如下
# hello.py
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/html')])
return '<h1>Hello, web!</h1>'
2)建立 server.py
# -*- coding:utf-8 -*-
# 从wsgiref模块导入:
from wsgiref.simple_server import make_server
# 导入我们自己编写的application函数:
from hello import application
# 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
httpd = make_server('', 8000, application)
print "Serving HTTP on port 8000..."
# 开始监听HTTP请求:
httpd.serve_forever()
缺点:貌似只能创建一个访问地址,不同 url 路由不好控制
1 - flask 建立一个 web server
1、pip install Flask
2、建立一个 test_flask.py 的文件,加入代码如下:
# -*- coding:utf-8 –*-
from flask import Flask, request, make_response, current_app
from functools import wraps
import json
import sys
import datetime
# 一个 app 是一个 Flask 文件
app = Flask(__name__)
def jsonp(func):
"""Wraps JSONified output for JSONP requests."""
@wraps(func)
def decorated_function(*args, **kwargs):
callback = request.args.get('callback', False)
if callback:
data = str(func(*args, **kwargs).data)
content = str(callback) + '(' + data + ')'
mimetype = 'application/javascript'
return current_app.response_class(content, mimetype=mimetype)
else:
return func(*args, **kwargs)
return decorated_function
# 有route
@app.route('/test', methods=['GET'])
def test():
resp = make_response(
(
json.dumps({'key':'value'}),
200,
{'Content-Type': 'application/json'}
)
)
return resp
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8899)
2 - 安装mysql
1、使用 brew 安装 mysql 服务
brew install mysql
2、启动 mysql 服务
mysql.server start
3、使用 root 用户免密登录
mysql -uroot
4、修改 root 密码
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
5、登录 mysql 数据库 建立测试表格
create table tb_dept(
id int primary key auto_increment,#部门编号 整形 主键 自增长
name varchar(18),#部门名称
description varchar(100)#描述
);
3 - 安装 MySQL-python
pip install MySQL-python
4 - 手写数据库连接代码
# -*- coding:utf-8 –*-
from flask import Flask, request, make_response, current_app
from functools import wraps
import MySQLdb as mysql
import json
import sys
import datetime
app = Flask(__name__)
def MysqlInit():
#connect to mysql
hostaddress = 'localhost'
username = 'root'
password = '*****'
database = 'test'
try:
conn = mysql.connect(
host=hostaddress,
user=username,
passwd=password,
db=database,
charset="utf8")
print 'connect to mysql db success'
return conn
except Exception, e:
print e
sys.exit('init mysql failed!')
def CheckConnect(conn):
try:
conn.ping()
return conn
except:
print 'mysql coonect has been closed now reconnect'
cur_conn = MysqlInit()
return cur_conn
def QueryClusterInfo(conn):
print "\ncoming QueryClusterInfo!!!"
try:
conn = CheckConnect(conn)
cursor = conn.cursor()
except:
conn = CheckConnect(conn)
cursor = conn.cursor()
response_dict = {'ret_code':0,'ret_msg':'ok'}
sql_cmd = 'select * from tb_dept'
try:
cursor.execute(sql_cmd)
cluster_result = cursor.fetchall()
except:
cursor.close()
response_dict['ret_code'] = 1
response_dict['ret_msg'] = 'sql_select_error_in_queryClusterInfo'
return json.dumps(response_dict)
response_dict['res'] = []
if cluster_result is not None:
for items in cluster_result:
res = {}
res['id'] = items[0]
res['name'] = items[1]
res['description'] = items[2]
response_dict['res'].append(res)
cursor.close()
return json.dumps(response_dict)
def jsonp(func):
"""Wraps JSONified output for JSONP requests."""
@wraps(func)
def decorated_function(*args, **kwargs):
callback = request.args.get('callback', False)
if callback:
data = str(func(*args, **kwargs).data)
content = str(callback) + '(' + data + ')'
mimetype = 'application/javascript'
return current_app.response_class(content, mimetype=mimetype)
else:
return func(*args, **kwargs)
return decorated_function
@app.route('/test_mysql', methods=['GET'])
def test():
conn = MysqlInit()
resp = make_response(
(
QueryClusterInfo(conn),
200,
{'Content-Type': 'application/json'}
)
)
return resp
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8989)
flask + MySQL-python 创建 webapp 应用的更多相关文章
- python操作三大主流数据库(4)python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示
python操作mysql④python服务端flask和前端bootstrap框架结合实现新闻展示 参考文档http://flask.pocoo.org/docs/0.11/http://flask ...
- 前端和后端的数据交互(jquery ajax+python flask+mysql)
上web课的时候老师布置的一个实验,要求省市连动,基本要求如下: 1.用select选中一个省份. 2.省份数据传送到服务器,服务器从数据库中搜索对应城市信息. 3.将城市信息返回客户,客户用sele ...
- 个人学期总结及Python+Flask+MysqL的web建设技术过程
一个学期即将过去,我们也迎来了2018年.这个学期,首次接触了web网站开发建设,不仅是这门课程,还有另外一门用idea的gradle框架来制作网页. 很显然,用python语言的flask框架更加简 ...
- Python+Flask+MysqL的web建设技术过程
一.前言(个人学期总结) 个人总结一下这学期对于Python+Flask+MysqL的web建设技术过程的学习体会,Flask小辣椒框架相对于其他框架而言,更加稳定,不会有莫名其妙的错误,容错性强,运 ...
- Python+Flask+MysqL的web技术建站过程
1.个人学期总结 时间过得飞快,转眼间2017年就要过去.这一年,我学习JSP和Python,哪一门都像一样新的东西,之前从来没有学习过. 这里我就用我学习过的Python和大家分享一下,我是怎么从一 ...
- 在 Windows Azure 网站上使用 Django、Python 和 MySQL:创建博客应用程序
编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Sunitha Muthukrishna 撰写. 根据您编写的应用程序,Windows Azure 网站上的基本Python 堆 ...
- python创建MySQL多实例-1
python创建MySQL多实例-1 前言 什么是多实例 多实例就是允许在同一台机器上创建另外一套不同配置文件的数据库,他们之间是相互独立的,主要有以下特点, 1> 不能同时使用一个端口 2&g ...
- 实战接口开发:python + flask + mysql + redis(根据反馈,持续细化更新。。。)
前言 自动化已经成为测试的必备技能之一了,所以,很多想跳槽的测试朋友都在自学,特别是最实用的接口自动化, 但是很多人因为没有可以练手的项目而苦恼,最终导致缺乏实战经验,其实,完全可以自己开发个简单项目 ...
- python三大web框架Django,Flask,Flask,Python几种主流框架,13个Python web框架比较,2018年Python web五大主流框架
Python几种主流框架 从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python We ...
- Flask+MySQL+Redis的Docker配置
Docker配置了好多天,昨天晚上终于把碎遮项目的Docker打包完成了,后面会继续完善项目代码,把稳定版本打包后推送到DockerHub上. 网上关于Docker配置的文章很多,但大部分都是复制粘贴 ...
随机推荐
- 计算机网络--差错检测(帧检验序列FCS计算方法)
我们知道数据链路层广泛使用循环冗余检验CRC的检验技术 现在我们知道要发送的数据M=101001(长度为k=6) 在我们每次发送数据的时候需要在M后面添加一个N位的冗余码,一共发送(k+N)位数据 ...
- Day044--javascript, ECMAScript
一. javascript JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:操作网页上的 ...
- python中logger模块的应用
logger模块是python内置的一个模块,主要用于输出运行日志,可以输出日志的等级,日志的保存路径等 具体详见博客https://www.cnblogs.com/qianyuliang/p/723 ...
- Java Properties 类读配置文件保持顺序
前几天,公司项目中有一个需求是读取配置文件的,而且最好能够保证加载到内存中的顺序能够和配置文件中的顺序一致,但是,如果使用 jdk 中提供的 Properties 类的话,读取配置文件后,加载到内存中 ...
- .net core 多租户框架整理
一 saaskitAsp.Net Core multi-tenant application Sample using #SaaSKithttps://github.com/saaskit/saask ...
- 在鼠标右键上加入使用notepad++编辑【转】
我们在安装完notepad++文本编辑器之后,在一个文本文件上右键有时候并没有出现“使用notepad++编辑的选项”,我们可以通过简单地修改注册表文件来增加这样的功能: 1. 首先打开注册表,wi ...
- KNN和Kmeans聚类有什么不同?
这两种算法之间的根本区别是,Kmeans本质上是无监督学习而KNN是监督学习.Kmeans是聚类算法,KNN是分类(或回归)算法. Kmeans算法把一个数据集分割成簇,使得形成的簇是同构的,每个簇里 ...
- Python3:OOP Demo
方便快速回顾Python的OOP语法 ###################### # 类的私有专有方法 # ###################### # __init__ : 构造函数,在生成对 ...
- spring cloud(学习笔记)高可用注册中心(Eureka)的实现(一)
最近在学习的时候,发现微服务架构中,假如只有一个注册中心,那这个注册中心挂了可怎么办,这样的系统,既不安全,稳定性也不好,网上和书上找了一会,发现这个spring cloud早就想到了,并帮我们解决了 ...
- Anaconda+django安装问题
Anaconda使用中常遇到如下问题: 如果Anaconda不是最新版本,可在Anaconda Prompt中使用如下命令更新至最新版 conda update -n base -c defaults ...