extras-buildsys/server Config.py,1.8,1.9 DBManager.py,1.2,1.3

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Mon Oct 24 15:34:07 UTC 2005


Author: dcbw

Update of /cvs/fedora/extras-buildsys/server
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv21092/server

Modified Files:
	Config.py DBManager.py 
Log Message:
2005-10-24  Dan Williams  <dcbw at redhat.com>

    Patch from Jeff Sheltren <sheltren at cs.ucsb.edu>
    * server/DBManager.py
      server/Config.py
        - Add MySQL support




Index: Config.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/Config.py,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- Config.py	19 Oct 2005 13:38:40 -0000	1.8
+++ Config.py	24 Oct 2005 15:34:05 -0000	1.9
@@ -138,6 +138,12 @@
         self.set_option("pgdb Engine", "user", "plague")
         self.set_option("pgdb Engine", "password", "")
 
+        self.add_section("mysql Engine")
+        self.set_option("mysql Engine", "host", "localhost")
+        self.set_option("mysql Engine", "database", "plague")
+        self.set_option("mysql Engine", "user", "plague")
+        self.set_option("mysql Engine", "password", "")
+
 
         self.save()
 


Index: DBManager.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/server/DBManager.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DBManager.py	17 Oct 2005 21:09:29 -0000	1.2
+++ DBManager.py	24 Oct 2005 15:34:05 -0000	1.3
@@ -199,11 +199,59 @@
         return dbcx
 
 
+class mysqlEngineClass(BaseDBEngineClass):
+
+    """ MySQL will autoincrement the primary key since we define
+        it as auto_increment """
+
+    def get_uid_field_type(self):
+        return "int(11) NOT NULL auto_increment PRIMARY KEY"
+
+    def get_uid_field_for_insert(self):
+        return ""
+
+    def get_uid_value_for_insert(self):
+        return ""
+
+    def fetchall(self, cursor):
+        """ We need to convert the returned data to a ResultSet object so
+            we can access it as a dict 
+        """
+        rows = cursor.fetchall()
+        return [ResultSet(row, cursor.description) for row in rows]
+
+    def fetchone(self, cursor):
+        """ We need to convert the returned data to a ResultSet object so
+            we can access it as a dict 
+        """
+        row = cursor.fetchone()
+        if not row:
+            return None
+        return ResultSet(row, cursor.description)
+
+    def _connect(self):
+        try:
+            host = self._cfg.get_str("mysql Engine", "host")
+            database = self._cfg.get_str("mysql Engine", "database")
+            user = self._cfg.get_str("mysql Engine", "user")
+            password = self._cfg.get_str("mysql Engine", "password")
+        except BaseConfig.ConfigError, e:
+            print "Error: bad mysql config options.  '%s'" % e
+            os._exit(1)
+
+        try:
+            dbcx = MySQLdb.connect(host=host, db=database, user=user, passwd=password)
+        except StandardError, e:
+            print "Error: %s" % e
+            os._exit(1)
+
+        return dbcx
 
 
 db_engines = {
     'sqlite':   sqliteEngineClass,
-    'pgdb':    pgdbEngineClass
+    'pgdb':    pgdbEngineClass,
+    'mysql':    mysqlEngineClass
 }
 
 # Import our database engines, if any engine
@@ -219,6 +267,11 @@
 except ImportError, e:
     db_engines['pgdb'] = None
 
+try:
+    import MySQLdb
+except ImportError, e:
+    db_engines['mysql'] = None
+
 
 
 class DBManager:




More information about the fedora-extras-commits mailing list