[SQL-CVS] r1151 - SQLObject/trunk/sqlobject/manager
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2005-10-27 16:03:54
|
Author: ianb
Date: 2005-10-27 16:03:44 +0000 (Thu, 27 Oct 2005)
New Revision: 1151
Modified:
SQLObject/trunk/sqlobject/manager/command.py
Log:
added code to CommandCreate that collects data from sqlmeta.createSQL and runs the queries after table creation. createSQL can be a string with a single SQL command, a list of SQL commands, or a dictionary with keys that are dbNames and a single SQL command string or a list of SQL commands as strings.
Modified: SQLObject/trunk/sqlobject/manager/command.py
===================================================================
--- SQLObject/trunk/sqlobject/manager/command.py 2005-10-27 02:55:52 UTC (rev 1150)
+++ SQLObject/trunk/sqlobject/manager/command.py 2005-10-27 16:03:44 UTC (rev 1151)
@@ -550,6 +550,7 @@
existing = 0
dbs_created = []
constraints = {}
+ createSQLs = {}
for soClass in self.classes(require_some=True):
if (self.options.create_db
and soClass._connection not in dbs_created):
@@ -560,6 +561,8 @@
dbs_created.append(soClass._connection)
if soClass._connection not in constraints.keys():
constraints[soClass._connection] = []
+ if soClass._connection not in createSQLs.keys():
+ createSQLs[soClass._connection] = []
exists = soClass._connection.tableExists(soClass.sqlmeta.table)
if v >= 1:
if exists:
@@ -577,7 +580,16 @@
tableConstraints = soClass.createTable()
if tableConstraints:
constraints[soClass._connection].append(tableConstraints)
-
+ tableCreateSQLs = getattr(soClass.sqlmeta, 'createSQL', None)
+ if tableCreateSQLs:
+ assert isinstance(tableCreateSQLs,(str,list,dict)), (
+ '%s.sqlmeta.createSQL must be a str, list or dict.' %
+ (soClass.__name__))
+ if isinstance(tableCreateSQLs, dict):
+ tableCreateSQLs = tableCreateSQLs.get(soClass._connection.dbName, [])
+ if isinstance(tableCreateSQLs, str):
+ tableCreateSQLs = [tableCreateSQLs]
+ createSQLs[soClass._connection].append(tableCreateSQLs)
else:
print 'Cancelled'
else:
@@ -585,11 +597,26 @@
tableConstraints = soClass.createTable()
if tableConstraints:
constraints[soClass._connection].append(tableConstraints)
+ tableCreateSQLs = getattr(soClass.sqlmeta, 'createSQL', None)
+ if tableCreateSQLs:
+ assert isinstance(tableCreateSQLs,(str,list,dict)), (
+ '%s.sqlmeta.createSQL must be a str, list or dict.' %
+ (soClass.__name__))
+ if isinstance(tableCreateSQLs, dict):
+ tableCreateSQLs = tableCreateSQLs.get(soClass._connection.dbName, [])
+ if isinstance(tableCreateSQLs, str):
+ tableCreateSQLs = [tableCreateSQLs]
+ createSQLs[soClass._connection].append(tableCreateSQLs)
for connection in constraints.keys():
for constraintList in constraints[connection]:
for constraint in constraintList:
if constraint:
connection.query(constraint)
+ for connection in createSQLs.keys():
+ for createSQLsList in createSQLs[connection]:
+ for createSQL in createSQLsList:
+ if createSQL:
+ connection.query(createSQL)
if v >= 1:
print '%i tables created (%i already exist)' % (
created, existing)
|