Bläddra i källkod

Add more of postgresql

oz123 10 år sedan
förälder
incheckning
a5b543cbd3
2 ändrade filer med 51 tillägg och 28 borttagningar
  1. 46 27
      pwman/data/drivers/postgresql.py
  2. 5 1
      pwman/tests/test_postgresql.py

+ 46 - 27
pwman/data/drivers/postgresql.py

@@ -365,34 +365,53 @@ class PostgresqlDatabase(Database):
         else:
             return row[0]
 
-    def _checktables(self):
-        """ Check if the Pwman tables exist """
-        cursor = self._get_cur()
-        cursor.execute("SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE "
-                       "TABLE_NAME = '%snodes'" % (self._prefix))
-
-        if not cursor.fetchone():
-            # table doesn't exist, create it
-            cursor.execute(("CREATE TABLE %sNODES "
-                            "(ID SERIAL PRIMARY KEY, DATA TEXT NOT NULL)"
-                            % (self._prefix)))
-            cursor.execute(("CREATE TABLE %sTAGS"
-                            "(ID SERIAL PRIMARY KEY,"
-                            "DATA TEXT NOT NULL UNIQUE)") % (self._prefix))
-            cursor.execute(("CREATE TABLE %sLOOKUP"
-                            "(NODE INTEGER NOT NULL, TAG INTEGER NOT NULL,"
-                            " PRIMARY KEY(NODE, TAG))") % self._prefix)
-
-            cursor.execute(("CREATE TABLE %sKEY"
-                           + "(THEKEY TEXT NOT NULL DEFAULT '')")
-                           % (self._prefix))
-            cursor.execute("INSERT INTO %sKEY VALUES('')" % (self._prefix))
+    def _create_tables(self):
 
-            try:
-                self._con.commit()
-            except pgdb.DatabaseError as e:
-                self._con.rollback()
-                raise e
+        try:
+            self._cur.execute("SELECT 1 from NODE")
+            version = self._cur.fetchone()
+            if version:
+                return
+        except pg.ProgrammingError:
+            self._con.rollback()
+
+        self._cur.execute("CREATE TABLE NODE(ID SERIAL PRIMARY KEY, "
+                          "USERNAME TEXT NOT NULL, "
+                          "PASSWORD TEXT NOT NULL, "
+                          "URL TEXT NOT NULL, "
+                          "NOTES TEXT NOT NULL"
+                          ")")
+
+        self._cur.execute("CREATE TABLE DBVERSION("
+                          "VERSION TEXT NOT NULL DEFAULT {}"
+                          ")".format(__DB_FORMAT__))
+    #def _checktables(self):
+    #    """ Check if the Pwman tables exist """
+    #    cursor = self._get_cur()
+    #    cursor.execute("SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE "
+    #                   "TABLE_NAME = '%snodes'" % (self._prefix))
+    #    if not cursor.fetchone():
+    #        # table doesn't exist, create it
+    #        cursor.execute(("CREATE TABLE %sNODES "
+    #                        "(ID SERIAL PRIMARY KEY, DATA TEXT NOT NULL)"
+    #                        % (self._prefix)))
+    #        cursor.execute(("CREATE TABLE %sTAGS"
+    #                        "(ID SERIAL PRIMARY KEY,"
+    #                        "DATA TEXT NOT NULL UNIQUE)") % (self._prefix))
+    #        cursor.execute(("CREATE TABLE %sLOOKUP"
+    #                        "(NODE INTEGER NOT NULL, TAG INTEGER NOT NULL,"
+    #                        " PRIMARY KEY(NODE, TAG))") % self._prefix)
+#
+    #        cursor.execute(("CREATE TABLE %sKEY"
+    #                       + "(THEKEY TEXT NOT NULL DEFAULT '')")
+    #                       % (self._prefix))
+    #        cursor.execute("INSERT INTO %sKEY VALUES('')" % (self._prefix))
+#
+#            try:
+#                self._con.commit()
+#            except pgdb.DatabaseError as e:
+#                self._con.rollback()
+#                raise e
 
     def savekey(self, key):
         sql = "UPDATE %sKEY SET THEKEY = %%(key)s" % (self._prefix)

+ 5 - 1
pwman/tests/test_postgresql.py

@@ -40,11 +40,15 @@ class TestPostGresql(unittest.TestCase):
     def tearDownClass(self):
 
         self.db._cur.execute("TRUNCATE DBVERSION")
+        self.db._cur.execute("TRUNCATE NODE")
 
-    def test_con(self):
+    def test_1_con(self):
 
         self.assertIsInstance(self.db._cur, pg._psycopg.cursor)
 
+    def test_2_create_tables(self):
+        self.db._create_tables()
+
 if __name__ == '__main__':
 
     ce = CryptoEngine.get()