]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
(no commit message)
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 24 Sep 2005 04:05:07 +0000 (04:05 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 24 Sep 2005 04:05:07 +0000 (04:05 +0000)
lib/sqlalchemy/ansisql.py
lib/sqlalchemy/schema.py
lib/sqlalchemy/sql.py
test/engines.py
test/mapper.py

index fca984ba4b6d47e88652b223bccd0210b40c6d5b..c73181afa51e15d58f4ec432eb19f0f22c950aae 100644 (file)
@@ -31,9 +31,6 @@ def engine(**params):
 
 class ANSISQLEngine(sqlalchemy.engine.SQLEngine):
 
-    def tableimpl(self, table):
-        return ANSISQLTableImpl(table)
-
     def schemagenerator(self, proxy, **params):
         return ANSISchemaGenerator(proxy, **params)
     
@@ -255,20 +252,11 @@ class ANSICompiler(sql.Compiled):
         return self.get_str(self.statement)
 
 
-    
-class ANSISQLTableImpl(sql.TableImpl):
-    """Selectable implementation that gets attached to a schema.Table object."""
-    
-    def __init__(self, table):
-        sql.TableImpl.__init__(self)
-        self.table = table
-        self.id = self.table.name
-        
-    def get_from_text(self):
-        return self.table.name
-
 class ANSISchemaGenerator(sqlalchemy.engine.SchemaIterator):
 
+    def get_column_specification(self, column):
+        raise NotImplementedError()
+        
     def visit_table(self, table):
         self.append("\nCREATE TABLE " + table.name + "(")
         
@@ -277,7 +265,7 @@ class ANSISchemaGenerator(sqlalchemy.engine.SchemaIterator):
         for column in table.columns:
             self.append(separator)
             separator = ", \n"
-            self.append("\t" + column.get_specification())
+            self.append("\t" + self.get_column_specification(column))
             
         self.append("\n)\n\n")
         self.execute()
index 59042eeb82565a541733d441f0a2f50b024e877d..ce6dd8c6335b9d5a5e116b949f2e100df57c9ab1 100644 (file)
@@ -216,8 +216,13 @@ class ForeignKey(SchemaItem):
         
 class Sequence(SchemaItem):
     """represents a sequence, which applies to Oracle and Postgres databases."""
+    def __init__(self, name, start = None, increment = None):
+        self.name = name
+        self.start = start
+        self.increment = increment
     def _set_parent(self, column, key):
         self.column = column
+        self.column.sequence = self
     def accept_visitor(self, visitor):
         return visitor.visit_sequence(self)
 
index aa247836c3dd78b8a41a4f0e194efc9d83174562..12666d72a6741c81071c856973604c204fd88a3d 100644 (file)
@@ -597,17 +597,11 @@ class TableImpl(Selectable):
     def _get_from_objects(self):
         return [self.table]
 
-    def create(self, sqlproxy = None, **params):
-        if sqlproxy is None:
-            sqlproxy = self.table.engine.proxy()
-        
-        self.table.accept_visitor(self.table.engine.schemagenerator(sqlproxy, **params))
+    def create(self, **params):
+        self.table.engine.create(self.table)
 
-    def drop(self, sqlproxy = None, **params):
-        if sqlproxy is None:
-            sqlproxy = self.table.engine.proxy()
-        
-        self.table.accept_visitor(self.table.engine.schemadropper(sqlproxy, **params))
+    def drop(self, **params):
+        self.table.engine.drop(self.table)
         
     
 class Select(Selectable):
index 2fb8e9aef7ca51e6e474773b5ff5b900833ec62d..3212f029c799919ce57aaef93ef4b215c0dd2028 100644 (file)
@@ -19,6 +19,7 @@ class EngineTest(PersistTest):
         self.do_tableops(db)
         
     def do_tableops(self, db):
+        # really trip it up with a circular reference
         users = Table('users', db,
             Column('user_id', INT, primary_key = True),
             Column('user_name', VARCHAR(20), nullable = False),
@@ -27,7 +28,7 @@ class EngineTest(PersistTest):
             Column('test3', TEXT),
             Column('test4', DECIMAL, nullable = False),
             Column('test5', TIMESTAMP),
-            Column('parent_user_id', INT),
+            Column('parent_user_id', INT, foreign_key = ForeignKey('users.user_id')),
             Column('test6', DATETIME, nullable = False),
             Column('test7', CLOB),
             Column('test8', BLOB),
@@ -40,18 +41,19 @@ class EngineTest(PersistTest):
             Column('email_address', VARCHAR(20)),
         )
         
-        # really trip it up with a circular reference
-        users.c.parent_user_id.set_foreign_key(ForeignKey(users.c.user_id))
+#        users.c.parent_user_id.set_foreign_key(ForeignKey(users.c.user_id))
 
         users.create()
         addresses.create()
 
         # clear out table registry
         db.tables.clear()
-        
+
+        print "HI"        
         users = Table('users', db, autoload = True)
         addresses = Table('email_addresses', db, autoload = True)
-        
+
+        print "DROP"        
         users.drop()
         addresses.drop()
         
index 03e604e5181fbd70a6a77206666ea1a8710346c6..36bbbb2542d400201ba9cc5faacc1540a085fc02 100644 (file)
@@ -1,15 +1,14 @@
 from testbase import PersistTest, AssertMixin
+import testbase
 import unittest, sys, os
 from sqlalchemy.mapper import *
 import sqlalchemy.objectstore as objectstore
 
-#ECHO = True
-ECHO = False
-DATA = True
-execfile("test/tables.py")
-db.echo = True
 
-        
+from tables import *
+
+db.echo = testbase.echo
+
 class MapperTest(AssertMixin):
     
     def setUp(self):
@@ -78,7 +77,7 @@ class PropertyTest(AssertMixin):
             ), is_primary = True)
         
         l = _User.mapper.select(_User.c.user_name == 'fred')
-        print repr(l)
+        self.echo(repr(l))
         
 
     def testinherits(self):
@@ -99,7 +98,7 @@ class PropertyTest(AssertMixin):
         jack.email_address = 'jack@gmail.com'
         objectstore.commit()
         
-        print repr(AddressUser.mapper.select(AddressUser.c.user_name == 'jack'))
+        self.echo(repr(AddressUser.mapper.select(AddressUser.c.user_name == 'jack')))
             
 class LazyTest(AssertMixin):
     def setUp(self):
@@ -120,16 +119,16 @@ class LazyTest(AssertMixin):
             address = relation(Address, addresses, lazy = True, uselist = False)
         ))
         l = m.select(users.c.user_id == 7)
-        print repr(l)
-        print repr(l[0].address)
+        self.echo(repr(l))
+        self.echo(repr(l[0].address))
 
     def testbackwardsonetoone(self):
         m = mapper(Address, addresses, properties = dict(
             user = relation(User, users, primaryjoin = users.c.user_id == addresses.c.user_id, lazy = True)
         ))
         l = m.select(addresses.c.address_id == 1)
-        print repr(l)
-        print repr(l[0].user)
+        self.echo(repr(l))
+        self.echo(repr(l[0].user))
 
     def testmanytomany(self):
         """tests a many-to-many lazy load"""
@@ -186,7 +185,7 @@ class EagerTest(AssertMixin):
         m = mapper(Address, addresses, properties = dict(
             user = relation(User, users, lazy = False)
         ))
-        print repr(m.props['user'].uselist)
+        self.echo(repr(m.props['user'].uselist))
         l = m.select(addresses.c.address_id == 1)
         self.assert_result(l, Address, 
             {'address_id' : 1, 'email_address' : 'jack@bean.com', 
@@ -214,10 +213,10 @@ class EagerTest(AssertMixin):
         ))
         s = m.compile(and_(addresses.c.email_address == bindparam('emailad'), addresses.c.user_id==users.c.user_id))
         c = s.compile()
-        print "\n" + str(c) + repr(c.get_params())
+        self.echo("\n" + str(c) + repr(c.get_params()))
         
         l = m.instances(s.execute(emailad = 'jack@bean.com'), users.engine)
-        print repr(l)
+        self.echo(repr(l))
         
     def testmulti(self):
         """tests eager loading with two relations simultaneously"""