· 6 years ago · Nov 06, 2019, 01:08 PM
1from itertools import chain
2from flask import Flask, request, jsonify
3from flask_restful import Api, Resource
4from MySQLdb import connect
5
6app=Flask(__name__) # vytvaraju webovy kontajner, pouzitim Flask framework, alebo existuje este django
7api=Api(app)
8
9
10class Hello(Resource):
11 def get(self):
12 data = {'alfa': 1, 'beta': 9, 'gama': 3}
13 return jsonify(data)
14
15
16"""
17class Fero(Resource):
18 # Resource je trieda ktora definuje koncove connection points
19 def get(self):
20 data = ('Fero je kar')
21 return data
22"""
23
24
25class DB_JDBC(Resource):
26 def __init__(self, *args, **kwargs):
27 self.host = kwargs['host']
28 self.user = kwargs['user']
29 self.password = kwargs['passwd']
30 self.db = kwargs['db']
31 self.conn = connect(host=self.host,
32 user=self.user,
33 password=self.password,
34 database=self.db)
35 self.cursor = self.conn.cursor()
36
37 def __del__(self):
38 self.conn.close()
39
40 def get(self, db=None):
41 if not db:
42 sql = """show schemas"""
43 key = "schemas"
44 else:
45 sql = """show tables from {}""".format(db)
46 key = "tables"
47 try:
48 self.cursor.execute(sql)
49 self.result = self.cursor.fetchall()
50 except Exception as e:
51 print("Chyba! : ", e)
52 self.conn.rollback()
53 self.result = -2
54 self.data = {}
55 self.data[key] = list(chain(*self.result))
56 return jsonify(self.data)
57
58class DataFromTable(Resource):
59 def __init__(self, *args, **kwargs):
60 self.host = kwargs['host']
61 self.user = kwargs['user']
62 self.password = kwargs['passwd']
63 self.db = kwargs['db']
64 self.conn = connect(host=self.host,
65 user=self.user,
66 password=self.password,
67 database=self.db)
68 self.cursor = self.conn.cursor()
69
70 def __del__(self):
71 self.conn.close()
72
73 def get(self, db=None,table=None):
74 sql="""select * from {}.{}""".format(db,table)
75 key="data"
76 try:
77 self.cursor.execute(sql)
78 self.result = self.cursor.fetchall()
79 except Exception as e:
80 print("Chyba! : ", e)
81 self.conn.rollback()
82 self.result = -2
83 self.data = {}
84 self.data[key] = list(chain(*self.result))
85 return jsonify(self.data)
86
87
88
89db = {'host': '10.202.20.122',
90 'user': 'root',
91 'passwd': 'root',
92 'db': 'ondro'}
93
94api.add_resource(Hello, '/hi')
95# api.add_resource(DB_JDBC, "/db", resource_class_kwargs=db)
96
97# mozeme potrebovat 2 veci
98api.add_resource(DB_JDBC, "/db", "/db/<string:db>", resource_class_kwargs=db)
99api.add_resource(DataFromTable,'/db/<string:db>/table/<string:table>',resource_class_kwargs=db)
100
101if __name__ == '__main__':
102 app.run()