ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/ns_dev/Python/NinoCode/Active_prgs/Evidox/EclipseSQLConnector.py
Revision: 746
Committed: Thu Apr 15 20:11:16 2021 UTC (4 years, 11 months ago) by nino.borges
Content type: text/x-python
File size: 4556 byte(s)
Log Message:
Updated to be compatible with python3, which made the bak files.

File Contents

# Content
1 """
2
3 EclipseSQLConnector
4
5 Created by
6 Emanuel Borges
7 04.24.2018
8
9 Playing with the EclipseSQLDB. Someday this may turn into a lib or just set of methods.
10
11 """
12
13
14 import pyodbc
15
16 def GetCaseMatrix():
17 """Returns the case matrix of case name to internal case name. {External CaseName:Internal CaseName"""
18 matrix = {}
19
20 cnxn = pyodbc.connect("Driver={ODBC Driver 11 for SQL Server};""Server=IproSQL01;""Database=AddConfig;""Trusted_Connection=yes;")
21 cursor = cnxn.cursor()
22
23 cursor.execute('select name,databasename from Enterprise.CaseProductEnvironment where ProductId=3')
24
25 for row in cursor:
26 matrix[row.name] = row.databasename
27
28 #for row in cursor:
29 # print('row = %r' % (row,))
30
31 #for row in cursor:
32 # print row.name, row.databasename
33
34 return matrix
35
36 def GetDatabaseFields(internalCaseName):
37 """Returns a matrix of external field names to internal field and internal table names. {External FileName:(tableName, columnName)}"""
38 matrix = {}
39
40 cnxn = pyodbc.connect("Driver={ODBC Driver 11 for SQL Server};""Server=IproSQL01;""Database=%s;""Trusted_Connection=yes;"%internalCaseName)
41 cursor = cnxn.cursor()
42
43 cursor.execute('SELECT TableName, ColumnName, FieldName FROM vFieldDefinition')
44
45 #for row in cursor:
46 # print "%s | %s | %s"% (row.TableName, row.ColumnName, row.FieldName)
47
48 for row in cursor:
49 matrix[row.FieldName] = (row.TableName,row.ColumnName)
50
51 return matrix
52
53 def GetAnalyticsCategorySetsValues(internalCaseName):
54 """Returns a matrix of the values that a case has in all of the cat sets"""
55 matrix = {}
56
57 cnxn = pyodbc.connect("Driver={ODBC Driver 11 for SQL Server};""Server=IproSQL01;""Database=%s;""Trusted_Connection=yes;"%internalCaseName)
58 cursor = cnxn.cursor()
59
60 cursor.execute('Select top 10000 b.CategoryName, c.DocumentKey, a.IsEntireDocument, a.DocumentText FROM Analytics.CategoryExemplarDocument a left join [Analytics].[Category] b on b.CategoryId=a.CategoryId left join dbo.documents c on c.docid=a.docid order by 2 asc')
61
62 for row in cursor:
63 if row.IsEntireDocument:
64 docText = "FULL DOCUMENT"
65 else:
66 docText = row.DocumentText
67 if row.DocumentKey:
68 #docKey = "test"
69 docKey = row.DocumentKey
70 else:
71 docKey = "No Document"
72 if row.CategoryName in list(matrix.keys()):
73 matrix[row.CategoryName].append((docKey,docText))
74 else:
75 matrix[row.CategoryName] = [(docKey,docText),]
76
77 return matrix
78
79 def GetUniqueValues(internalCaseName, internalFieldName, internalTableName):
80 """Returns a list of unique values in field for database"""
81 matrix = {}
82
83 cnxn = pyodbc.connect("Driver={ODBC Driver 11 for SQL Server};""Server=IproSQL01;""Database=%s;""Trusted_Connection=yes;"%internalCaseName)
84 cursor = cnxn.cursor()
85
86 cursor.execute('Select DISTINCT %s FROM %s'% (internalFieldName, internalTableName))
87
88 for row in cursor:
89 #print row.Field000008
90 print(getattr(row,internalFieldName))
91
92
93 def GetProductionSize(internalCaseName, internalProdVolFieldName, internalProdVolTableName,internalNatFileSizeFieldName, internalNatFileSizeTableName, volumeValue):
94 """Returns the total production size, in GB, for a production with the volume of the voumeValue you give it"""
95 cnxn = pyodbc.connect("Driver={ODBC Driver 11 for SQL Server};""Server=IproSQL01;""Database=%s;""Trusted_Connection=yes;"%internalCaseName)
96 cursor = cnxn.cursor()
97
98 cursor.execute("Select %s.%s, %s.%s FROM %s INNER JOIN %s ON %s.DocId = %s.DocId WHERE %s LIKE '%s'"% (internalProdVolTableName,internalProdVolFieldName,internalNatFileSizeTableName, internalNatFileSizeFieldName, internalProdVolTableName,internalNatFileSizeTableName,internalProdVolTableName,internalNatFileSizeTableName,internalProdVolFieldName,volumeValue))
99
100 count = 0
101
102 for row in cursor:
103 count = count + getattr(row,internalNatFileSizeFieldName)
104
105
106 count2 = count / 1024
107 count3 = count2 / 1024
108 return count3
109
110
111
112 if __name__ == '__main__':
113
114 databaseName = 'NIPE-Covenant Health-Boehler-Review'
115
116 #GetDatabaseFields('VEDA-Wu Lee-CID-Review')
117 caseMatrix = GetCaseMatrix()
118 fieldMatrix = GetDatabaseFields(caseMatrix[databaseName])
119 GetUniqueValues(caseMatrix[databaseName],fieldMatrix['Custodian'][1],fieldMatrix['Custodian'][0])
120