field_value.py
2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#author: 4N
#createtime: 2021/1/27
#email: nheweijun@sina.com
import traceback
from ..models import Table,Columns,DES
from app.util.component.ApiTemplate import ApiTemplate
from app.util.component.PGUtil import PGUtil
from app.util.component.ModelVisitor import ModelVisitor
from sqlalchemy.orm import Session
class Api(ApiTemplate):
api_name = "属性列表"
def process(self):
#返回结果
res={}
system_session = None
try:
table_guid = self.para.get("table_guid")
column_guid = self.para.get("column_guid")
page_index = int(self.para.get("page_index", "0"))
page_size = int(self.para.get("page_size", "10"))
table:Table = Table.query.filter_by(guid=table_guid).one_or_none()
column:Columns = Columns.query.filter_by(guid=column_guid).one_or_none()
system_session: Session = PGUtil.get_db_session(DES.decode(table.relate_database.sqlalchemy_uri))
if self.para.get("key"):
query = '''where "{}" like '%{}%' '''.format(column.name,self.para.get("key"))
else :
query = ""
query_sql = 'select distinct "{}" from public."{}" {} order by "{}" limit {} offset {}'.format(
column.name,table.name,query, column.name,page_size,page_index * page_size
)
query_res = system_session.execute(query_sql).fetchall()
query_count = system_session.execute('select count(distinct "{}") from public."{}" {} '.format(
column.name,table.name,query
)).fetchone()
res["data"] = {}
res["data"]["count"] = query_count[0]
res["data"]["list"] = [dat[0] for dat in query_res]
res["result"] = True
except Exception as e:
print(traceback.format_exc())
raise e
finally:
try:
system_session.close()
except:
pass
return res
api_doc={
"tags":["管理接口"],
"parameters":[
{"name": "table_guid",
"in": "formData",
"type": "string",
"description": "表guid"},
{"name": "column_guid",
"in": "formData",
"type": "string",
"description": "表guid"},
{"name": "page_index",
"in": "formData",
"type": "int",
"description": "页"},
{"name": "page_size",
"in": "formData",
"type": "int",
"description": "页大小"},
{"name": "key",
"in": "formData",
"type": "string",
"description": "key检索关键字"},
],
"responses":{
200:{
"schema":{
"properties":{
}
}
}
}
}