从数据库获取数据-接口开发

 1 #从数据库获取数据
 2 import pymysql,hashlib
 3 import flask,json
 4 
 5 def op_mysql(sql:str):
 6     mysql_info = {
 7         'host': 'xx.2xx.z.zz0',
 8         'port': 3306,
 9         'password': 'ssdfds6',
10         'user': 'xx',
11         'db': 'jxxx',
12         'charset': 'utf8',
13         'autocommit': True
14     }
15     result = '执行完成'
16     conn = pymysql.connect(**mysql_info)
17     cur = conn.cursor(pymysql.cursors.DictCursor) #建立游标
18     cur.execute(sql)
19     if sql.strip().lower().startswith('select'):
20         # result  = cur.fetchone()
21         result  = cur.fetchall()
22     cur.close()
23     conn.close()
24     return result
25 
26 server = flask.Flask(__name__)
27 
28 @server.route('/table_data')
29 def get_table_data():
30     table_name = flask.request.args.get('table_name')
31     limit = flask.request.args.get('limit')
32     sql = 'select * from %s limit %s'%(table_name,limit)
33     result = op_mysql(sql) #结果是一个列表
34  #[{"id": 422, "username": "glw", "passwd": "123455", "is_admin": 123, "error_count": 0},
35 # {"id": 424, "username": "glw1", "passwd": "123455", "is_admin": 123, "error_count": 0}, ]
36     return json.dumps(result,ensure_ascii=False) #list也可以转成json串
37 
38 #优化 要是传参的时候 不传limit或者不传table_name或者传不存在的表名称或者limit传的不是数字
39 @server.route('/table_data')
40 def get_table_data():
41     #没有实现校验表是否存在
42     #只能获取这几张表
43     tables = ['app_myuser','dsk_test app_student','pp_product']
44     table_name = flask.request.args.get('table_name')
45     limit = flask.request.args.get('limit','10')
46     if table_name not in tables:
47         return json.dumps({'msg':'没有获取这个表的权限!'})
48     if not table_name:
49         return json.dumps({'msg':'table_name是必填字段!'},ensure_ascii=False)
50     if limit.isdigit():
51         sql = 'select * from %s limit %s'%(table_name,limit)
52     else:
53         return json.dumps({'msg':'limit请传入一个整数!'},ensure_ascii=False)
54     result = op_mysql(sql)
55     return json.dumps(result, ensure_ascii=False)  # list也可以转成json串
56 
57 def md5(s,):
58     s = (str(s)+'#$%$%').encode()
59     m = hashlib.md5(s)#加密
60     return m.hexdigest()
61 
62 
63 #实现添加成员 #并且密码加密存数据库
64 @server.route('/add_mem',methods=['post'])
65 def add_mem():
66     username = flask.request.json.get('username')
67     password = flask.request.json.get('password')
68     if username and password:
69         sql = 'select * from app_myuser where username = "%s"' %username
70         if op_mysql(sql):
71             data = {'msg':'用户已存在!'}
72         else:
73             new_password = md5(password)
74             insert_sql = 'insert into app_myuser(username,passwd) value ("%s","%s")'%(username,new_password)
75             data = {'msg':'用户添加成功!'}
76             op_mysql(insert_sql)
77     else:
78         data = {'msg':'必填参数未填,请查看接口文档!'}
79     return json.dumps(data,ensure_ascii=False)

 

转载于:https://www.cnblogs.com/baiby/p/10972133.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值