# -*- coding: utf-8 -*-
import os,sys
from flask import Flask, jsonify, abort, make_response, request
import sqlalchemy
from sqlalchemy import Column, Integer, String, orm
from sqlalchemy.ext.declarative import declarative_base
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False
jsonheader = {'Content-Type':'application/json; charset=utf-8', 'access-control-allow-origin':'*'}
Base = declarative_base()
class User(Base):
__tablename__='usertest'
id = Column(Integer, primary_key=True)
name = Column(String(255))
def __repr__(self):
return "<UserTest(name='%s')>"%(self.name)
@app.route('/user/list/', methods=['GET'])
def list():
engine = sqlalchemy.create_engine("mysql+pymysql://user:password@localhost/database?charset=utf8")
Base.metadata.bind=engine
sess = orm.sessionmaker(bind=engine)()
rslt = sess.query(User).all()
ret = []
for item in rslt:
ret.append(item.name)
resp = make_response(jsonify({'Users':ret, 'Status':'OK'}),200)
resp.headers = jsonheader
return resp
@app.route('/user/add/<string:username>', methods=['GET'])
def add(username):
engine = sqlalchemy.create_engine("mysql+pymysql://user:password@localhost/database?charset=utf8")
Base.metadata.bind=engine
sess = orm.sessionmaker(bind=engine)()
count = sess.query(sqlalchemy.func.count(User.id)).filter(User.name==username).first()
if(count[0]>0):
resp = make_response(jsonify({'Status':'USER already exists'}),409)
resp.headers = jsonheader
return resp
else:
try:
item = User(name=username)
sess.add(item)
sess.commit()
resp = make_response(jsonify({'Status':'OK'}),200)
resp.headers = jsonheader
return resp
except:
sess.rollback()
finish(ses)
resp = make_response(jsonify({'Status':'DB Error'}),500)
resp.headers = jsonheader
return resp
if __name__ == '__main__':
app.debug = True
app.run(host='0.0.0.0')