首页 技术 正文
技术 2022年11月19日
0 收藏 515 点赞 4,180 浏览 7391 个字

1.本例采用postgresql数据库,创建数据表 user_tbl

create table user_tbl(name varchar(20),signup_date date);

2.webapi接口

(1)tornado框架配置 t_tornado.py

#-*- coding:UTF-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define,options
import t_url
import psycopg2
app=tornado.web.Application(t_url.url)
define("port",default=8000,help="run on port",type=int)
if __name__=="__main__":
tornado.options.parse_command_line()
app.listen(options.port)
tornado.ioloop.IOLoop.instance().start()

(2)路径映射 t_url.py

from t_handler import *
url=[
(r'/',IndexHandler),
(r'/AddUser',AddHandler),
(r'/EditUser',EditHandler),
(r'/DelUser',DelHandler)
]

(3)处理类 t_handler.py

from tornado.web import RequestHandler
from tornado.escape import json_decode,json_encode
import psycopg2#解决js跨域请求问题
class BaseHandler(RequestHandler):
def set_default_headers(self):
self.set_header('Access-Control-Allow-Origin', '*')
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
self.set_header('Access-Control-Max-Age', 1000)
self.set_header('Access-Control-Allow-Headers', '*')
self.set_header('Content-type', 'application/json')#删除用户
class DelHandler(BaseHandler):
def post(self):
name=self.get_argument('name',None)
result={}
conn=psycopg2.connect(host='127.0.0.1',port=5432,user='leo',password='king',database='testdb')
cursor=conn.cursor()
try:
sqlstr="delete from user_tbl where name='%s'"%name
cursor.execute(sqlstr)
except(psycopg2.Warning,psycopg2.Error) as error:
result["result"]="DB Error:"+error.message
result["status"]="false"
result["code"]=300
self.write(json_encode(result))
conn.rollback()
cursor.close()
conn.close()
return
result["result"]="success"
result["status"]="true"
result["code"]=200
if(result["status"]=="true"):
conn.commit()
cursor.close()
conn.close()
self.write(json_encode(result))#修改用户
class EditHandler(BaseHandler):
def post(self):
o_name=self.get_argument('o_name',None)
name=self.get_argument('name',None)
time=self.get_argument('time',None)
result={}
conn=psycopg2.connect(host='127.0.0.1',port=5432,user='leo',password='king',database='testdb')
cursor=conn.cursor()
try:
sqlstr="update user_tbl set name='%s',signup_date='%s' where name='%s'"%(name,time,o_name)
cursor.execute(sqlstr)
except(psycopg2.Warning,psycopg2.Error) as error:
result["result"]="DB Error:"+error.message
result["status"]="false"
result["code"]=300
self.write(json_encode(result))
conn.rollback()
cursor.close()
conn.close()
return
result["result"]="success"
result["status"]="true"
result["code"]=200
if(result["status"]=="true"):
conn.commit()
cursor.close()
conn.close()
self.write(json_encode(result))#新增用户
class AddHandler(BaseHandler):
def post(self):
time=self.get_argument('time',None)
result={}
conn=psycopg2.connect(host='127.0.0.1',port=5432,user='leo',password='king',database='testdb')
cursor=conn.cursor()
try:
sqlstr="insert into user_tbl(name,signup_date) values('%s','%s')"%(name,time)
cursor.execute(sqlstr)
except(psycopg2.Warning,psycopg2.Error) as error:
result["result"]="DB Error:"+error.message
result["status"]="false"
result["code"]=300
self.write(json_encode(result))
conn.rollback()
cursor.close()
conn.close()
return
result["result"]="success"
result["status"]="true"
result["code"]=200
if(result["status"]=="true"):
conn.commit()
cursor.close()
conn.close()
self.write(json_encode(result)) class IndexHandler(BaseHandler):
def get(self):
conn=psycopg2.connect(host='127.0.0.1',port=5432,user='leo',password='king',database='testdb')
cursor=conn.cursor()
result={}
try:
sqlstr="select name,signup_date from user_tbl"
cursor.execute(sqlstr)
if(cursor.rowcount==0):
result["total"]=0
result["rows"]="no data."
result["status"]="false"
result["code"]=300
self.write(json_encode(result))
conn.close()
return
else:
res=cursor.fetchall()
content=[]
t=1
for item in res:
tempItem={}
tempItem["id"]=t
tempItem["name"]=item[0]
try:
tempItem["signup_date"]=item[1].strftime("%Y-%m-%d %H:%M:%S")
except:
tempItem["signup_date"]=''
t+=1
content.append(tempItem)
result["total"]=1000
result["rows"]=content
result["status"]="true"
result["code"]=200
except(psycopg2.Warning,psycopg2.Error) as error:
result["result"]="DB error:"+error.message
result["status"]="false"
result["code"]=300
self.write(json_encode(result))
conn.rollback()
conn.close()
return
if(result["status"]=="true"):
conn.commit()
conn.close()
print json_encode(result)
self.write(json_encode(result))

3.html请求

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<meta charset="utf-8" />
<script src="Scripts/jquery.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.easyui.min.js" type="text/javascript"></script>
<link href="Css/easyui.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var o_name;
var userUrl = "http://127.0.0.1:8000";
$(function () {
initUser();
$('#dri_grid').datagrid('load', userUrl);
$("#dri_tools_add").click(function() {
$("#n_name").val("");
$("#n_time").val("");
var a = document.getElementById('driver_add');
a.href = "javascript:driver_adddd()";
$("#adduser").show();
});
$("#dri_tools_edit").click(function() {
var row=$("#dri_grid").datagrid('getSelected');
if(row){
var name = row.name;
o_name = name;
var time = row.signup_date;
$("#n_name").val(name);
$("#n_time").val(time);
var a = document.getElementById('driver_add');
a.href = "javascript:driver_editdd()";
$("adduser").show();
}
else{
alert("please select");
}
$("#adduser").show();
});
$("#dri_tools_del").click(function() {
var row = $('#dri_grid').datagrid('getSelected');
if (row) {
if(confirm("really delete?")){
var t_name = row.name;
var datas = {
name: t_name
};
var driver_delurl="http://127.0.0.1:8000/DelUser";
$.post(driver_delurl, datas, function (v) {
if (v.status=="true") {
$("#dri_grid").datagrid("reload");
alert("success");
} else {
alert("error");
}
});
}
} else {
alert("please select");
}
});
});
function driver_adddd(){
var n_name = $("#n_name").val();
var n_time = $("#n_time").val();
var userdata = {
name: n_name,
time: n_time
};
var driver_addurl="http://127.0.0.1:8000/AddUser";
$.post(driver_addurl, userdata, function(s) {
if (s.status == "true") {
$("#dri_grid").datagrid("reload");
alert('新增成功');
} else {
alert(s.result);
}
});
}
function driver_editdd(){
var n_name = $("#n_name").val();
var n_time = $("#n_time").val();
var userdata = {
o_name:o_name,
name: n_name,
time: n_time
};
var driver_addurl="http://127.0.0.1:8000/EditUser";
$.post(driver_addurl, userdata, function(s) {
if (s.status == "true") {
$("#dri_grid").datagrid("reload");
alert('更新成功');
} else {
alert(s.result);
}
});
}
function initUser() {
$('#dri_grid').datagrid({
border: false,
fit: true,
singleSelect: true,
method: 'get',
pagination: true,
striped: true,
pageSize: 20,
onBeforeLoad: function() {
},
columns: [
[{
field: 'name',
title: 't_name',
width: '8%',
align: 'center'
}, {
field: 'signup_date',
title: 't_signup_date',
width: '14%',
align: 'center'
}
]
],
onLoadSuccess: function(data) {
}
});
}
</script>
</head>
<body>
<span id="dri_tools_add">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="width: 100px">新增</a>
</span>&nbsp;&nbsp;
<span id="dri_tools_edit">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="width: 100px">修改</a>
</span>&nbsp;&nbsp;
<span id="dri_tools_del">
<a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" style="width: 100px">删除</a>
</span>
<div id="adduser" style="display:none;">
<table style="padding-left: 4%; padding-right: 4%">
<tr>
<td>
<span style="color: red">*</span>
<label>姓名:</label>
</td>
<td style="padding-right: 80px; padding-bottom: 5px;">
<input id="n_name" style="width:100px;" type="text">
</td>
<td>
<label>注册时间:</label>
</td>
<td style="padding-bottom: 5px; width: 175px;">
<input id="n_time" style="width:100px;" type="text">
</td>
</tr>
</table>
<div><a id="driver_add" class="easyui-linkbutton" data-options="iconCls:'icon-ok'" href="javascript:void(0)" rel="external nofollow" style="width: 120px">提交</a> </div>
</div>
<table id="dri_grid"></table>
</body></html>

4.浏览器显示结果:

(1)查询

python tornado框架实现CRUD

(2)新增

python tornado框架实现CRUD

(3)修改

python tornado框架实现CRUD

(4)删除

python tornado框架实现CRUD

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,993
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,507
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,350
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,135
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,768
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,845