-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathquery.py
More file actions
78 lines (66 loc) · 1.95 KB
/
Copy pathquery.py
File metadata and controls
78 lines (66 loc) · 1.95 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
import cx_Oracle
import json
import sys
from datetime import datetime
dsn = """(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = XE)))"""
def query(sqlstring, pars, tojson=True):
con = cx_Oracle.connect(user="tao", password="122122", dsn=dsn)
c = con.cursor()
c.execute(sqlstring, pars)
colnames = [ i[0] for i in c.description ]
data = []
for items in c:
lda = []
for item in items:
a=type(item)
if type(item) is cx_Oracle.LOB:
lstr = item.read()
elif type(item) is str:
lstr = item
elif type(item) is datetime:
lstr = item.strftime("%Y%m%d")
else:
lstr = item
lda.append(lstr)
data.append(dict(zip(colnames, lda)))
if tojson:
return json.dumps(data)
else:
return data
def queryWrite(writeSQL, inputArray, clobIndex = []):
con = cx_Oracle.connect(user="tao", password="122122", dsn=dsn)
c = con.cursor()
for idx in clobIndex:
CONTENT = c.var(cx_Oracle.CLOB)
inputArray[idx] = CONTENT.setvalue(0, inputArray[idx])
try:
c.execute(writeSQL, inputArray)
result = c.execute("COMMIT")
if c != None:
c.close()
if con != None:
con.close()
return {
'status': True,
'err': ''
}
except cx_Oracle.DatabaseError as e:
if c != None:
c.close()
if con != None:
con.close()
return {
'status': False,
'err': e.args[0]
}
except Exception as e:
if c != None:
c.close()
if con != None:
con.close()
return {
'status': False,
'err': e
}
def queryDatabase():
return 'oracle_production'