ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/RegSvc/src/python/SqlGenerator.py
Revision: 1.1
Committed: Mon May 18 20:17:43 2009 UTC (15 years, 11 months ago) by sekhri
Content type: text/x-python
Branch: MAIN
CVS Tags: HEAD
Log Message:
implementing reg service in WMCORE

File Contents

# Content
1 from DataStructures import *
2
3 class SqlGenerator:
4 """
5 A simple sql for inserting into a table. The sql generated depends on the keys provided in the object
6 """
7 def getInsertSql(self, objType, object):
8 object = getTrimmedObject(object)
9 sql = 'insert into ' + objType + ' ('
10 sqlValue = 'values ( '
11 index = 1
12 objKeys = object.keys()
13 if 'id' in objKeys: index = 2
14 for aKey in objKeys:
15 if aKey == 'id': raise 'You should not provide id when inserting a record in the database. Ids are generated internally'
16 sql += aKey + ' '
17 sqlValue += ':' + aKey + ' '
18 if index != len(objKeys):
19 sql += ' , '
20 sqlValue += ' , '
21 index += 1
22
23 sql += ') ' + sqlValue + ')'
24 return sql
25
26 def getSelectSql(self, objType, object):
27 """
28 Sql for selecting every column from a table depending on the constraints provided by the object keys.
29 """
30 validate(objType, object, True)
31 object = getTrimmedObject(object)
32 objKeys = object.keys()
33
34 sql = "select * from " + objType
35 index = 1
36 if len(objKeys) > 0:
37 sql += ' where '
38 for aKey in objKeys:
39 sql += aKey + ' like :' + aKey + ' '
40 if index != len(objKeys): sql += ' and '
41 index += 1
42 index = 1
43 uniqueKeys = getRequiredKeys(objType)
44 if len(uniqueKeys) > 0:
45 sql += ' order by '
46 for aUKey in uniqueKeys:
47 sql += aUKey + ' '
48 if index != len(uniqueKeys): sql += ' , '
49 index += 1
50
51 return sql
52
53 def getUpdateSql(self, objType, object):
54 """
55 To generate sql to update row/s in a table . The constraints are generated according to the unique keys in the object. Rest of the keys are used in update set clause
56 """
57 object = getTrimmedObject(object)
58 sql = 'update ' + objType + ' set '
59 index = 1
60 objKeys = object.keys()
61 uniqueKeys = getRequiredKeys(objType)
62 if 'id' in objKeys: index = 2
63 if len(uniqueKeys) > 0: index += len(uniqueKeys)
64 for aKey in objKeys:
65 if aKey not in uniqueKeys and aKey != 'id':
66 sql += aKey + ' = :' + aKey
67 if index != len(objKeys): sql += ' , '
68 index += 1
69 index = 1
70 if len(uniqueKeys) > 0:
71 sql += ' where '
72 for aUKey in uniqueKeys:
73 sql += aUKey + ' = :' + aUKey
74 if index != len(uniqueKeys): sql += ' and '
75 index += 1
76 if 'id' in objKeys:
77 sql += ' and id = :id'
78 return sql
79
80
81 def getTrimmedObject(object) :
82 print 'inside from getTrimmedObject'
83 objKeys = object.keys()
84 newObject = {}
85 for aKey in objKeys:
86 if object[aKey] not in ['', 0, 0.0, None, 'None']: newObject[aKey] = object[aKey]
87 print 'returng from getTrimmedObject'
88 return newObject
89