[SQL-CVS] r1173 - in SQLObject/trunk/sqlobject: . manager
SQLObject is a Python ORM.
Brought to you by:
ianbicking,
phd
|
From: <sub...@co...> - 2005-10-28 16:22:30
|
Author: ianb
Date: 2005-10-28 16:22:17 +0000 (Fri, 28 Oct 2005)
New Revision: 1173
Modified:
SQLObject/trunk/sqlobject/dbconnection.py
SQLObject/trunk/sqlobject/manager/command.py
Log:
moved createSQL code from manager/command.py:CommandCreate to extend the constraints returned in dbconnection.py:createTableSQL
Modified: SQLObject/trunk/sqlobject/dbconnection.py
===================================================================
--- SQLObject/trunk/sqlobject/dbconnection.py 2005-10-28 16:03:16 UTC (rev 1172)
+++ SQLObject/trunk/sqlobject/dbconnection.py 2005-10-28 16:22:17 UTC (rev 1173)
@@ -533,11 +533,29 @@
if constraint]
return refConstraintDefs
+ def createSQL(self, soClass):
+ tableCreateSQLs = getattr(soClass.sqlmeta, 'createSQL', None)
+ if tableCreateSQLs:
+ assert isinstance(tableCreateSQLs,(str,list,dict,tuple)), (
+ '%s.sqlmeta.createSQL must be a str, list, dict or tuple.' %
+ (soClass.__name__))
+ if isinstance(tableCreateSQLs, dict):
+ tableCreateSQLs = tableCreateSQLs.get(soClass._connection.dbName, [])
+ if isinstance(tableCreateSQLs, str):
+ tableCreateSQLs = [tableCreateSQLs]
+ if isinstance(tableCreateSQLs, tuple):
+ tableCreateSQLs = list(tableCreateSQLs)
+ assert isinstance(tableCreateSQLs,list), (
+ 'Unable to create a list from %s.sqlmeta.createSQL' %
+ (soClass.__name__))
+ return tableCreateSQLs
+
def createTableSQL(self, soClass):
constraints = self.createReferenceConstraints(soClass)
+ extraSQL = self.createSQL(soClass)
createSql = ('CREATE TABLE %s (\n%s\n)' %
(soClass.sqlmeta.table, self.createColumns(soClass)))
- return createSql, constraints
+ return createSql, constraints + extraSQL
def createColumns(self, soClass):
columnDefs = [self.createIDColumn(soClass)] \
Modified: SQLObject/trunk/sqlobject/manager/command.py
===================================================================
--- SQLObject/trunk/sqlobject/manager/command.py 2005-10-28 16:03:16 UTC (rev 1172)
+++ SQLObject/trunk/sqlobject/manager/command.py 2005-10-28 16:22:17 UTC (rev 1173)
@@ -550,7 +550,6 @@
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):
@@ -561,8 +560,6 @@
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:
@@ -580,16 +577,6 @@
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:
@@ -597,26 +584,11 @@
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)
|