Browse Source

Allow to use SqlWrapper.createTable without being called by SqlWrapper.createAllFromConf

Yann Weber 9 years ago
parent
commit
b82ccd7911
1 changed files with 17 additions and 4 deletions
  1. 17
    4
      Database/sqlwrapper.py

+ 17
- 4
Database/sqlwrapper.py View File

66
         self.w_conn = None
66
         self.w_conn = None
67
 
67
 
68
 
68
 
69
-        self.meta = None
69
+        self.meta = None #TODO : use it to load all db schema in 1 request and don't load it each table instanciation
70
+        self.meta_crea = None
70
         pass
71
         pass
71
 
72
 
72
     @property
73
     @property
270
         self.meta_crea = None
271
         self.meta_crea = None
271
         pass
272
         pass
272
             
273
             
273
-    def createTable(self, name, columns, extra = dict()):
274
+    def createTable(self, name, columns, **kw):
274
         """ Create a table
275
         """ Create a table
275
             @param name str: The table name
276
             @param name str: The table name
276
-            @param columns list: A list of columns schema
277
+            @param columns list: A list of columns description dict
277
             @param extra dict: Extra arguments for table creation
278
             @param extra dict: Extra arguments for table creation
278
             @see SqlWrapper::createColumn()
279
             @see SqlWrapper::createColumn()
279
         """
280
         """
281
+
282
+        if self.meta_crea == None:
283
+            self.meta_crea = sqla.MetaData()
284
+            crea_now = True
285
+        else:
286
+            crea_now = False
287
+
280
         if not isinstance(name, str):
288
         if not isinstance(name, str):
281
             raise TypeError("<class str> excepted for table name, but got "+type(name))
289
             raise TypeError("<class str> excepted for table name, but got "+type(name))
282
 
290
 
283
-        res = sqla.Table(name, self.meta_crea, **extra)
291
+        res = sqla.Table(name, self.meta_crea, **kw)
284
         for i,col in enumerate(columns):
292
         for i,col in enumerate(columns):
285
             res.append_column(self.createColumn(**col))
293
             res.append_column(self.createColumn(**col))
286
 
294
 
295
+        if crea_now:
296
+            self.meta_crea.create_all(self.w_engine)
297
+
298
+        pass
299
+
287
     def createColumn(self, **kwargs):
300
     def createColumn(self, **kwargs):
288
         """ Create a Column
301
         """ Create a Column
289
             
302
             

Loading…
Cancel
Save