Merge branch 'fibre' of ssh://git.onelab.eu/git/myslice into fibre
[unfold.git] / portal / database.py
1 import sys
2 import psycopg2
3 import psycopg2.extras
4
5 class Database():
6     
7     def __init__( self, DbConfigurations ):
8         self.connection = None
9         self.connect( DbConfigurations['dbHost'], DbConfigurations['dbUser'],
10                       DbConfigurations['dbPassword'], DbConfigurations['dbName'] )
11     
12     
13     def connect( self, host, user, password, database ):
14         result = True
15         try:
16             self.connection = psycopg2.connect( "host=" + host + " dbname=" + database + " user=" +
17                                                 user + " password=" + password )
18         except psycopg2.DatabaseError, e:
19             result = False
20             
21         return result
22     
23     
24     def close( self ):
25         if self.connection:
26             self.connection.close()
27             self.connection = None
28     
29     
30     def query( self, queryString ):
31         result = True
32         try:
33             cursor = self.connection.cursor()
34             cursor.execute( queryString )
35             self.connection.commit()
36         except Exception, e:
37             result = False
38             self.rollback()
39             
40         return result
41     
42     
43     def rollback( self ):
44         if self.connection:
45             self.connection.rollback()
46     
47     
48     def fetchRows( self, queryString ):
49         rows = None
50         try:
51             cursor = self.connection.cursor( cursor_factory = psycopg2.extras.RealDictCursor )
52             cursor.execute( queryString )
53             rows = cursor.fetchall()
54         except Exception, e:
55             pass
56             
57         return rows