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

# User Rev Content
1 nino.borges 663 """
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 nino.borges 746 if row.CategoryName in list(matrix.keys()):
73 nino.borges 663 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 nino.borges 746 print(getattr(row,internalFieldName))
91 nino.borges 663
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