from sqlalchemy.schema import *
import sqlalchemy.engine
+import os
#engine = sqlalchemy.engine.create_engine('sqlite', ':memory:', {}, echo = True)
-engine = sqlalchemy.engine.create_engine('postgres', {'database':'test', 'host':'127.0.0.1', 'user':'scott', 'password':'tiger'}, echo=True)
+#engine = sqlalchemy.engine.create_engine('postgres', {'database':'test', 'host':'127.0.0.1', 'user':'scott', 'password':'tiger'}, echo=True)
+db = sqlalchemy.engine.create_engine('oracle', {'dsn':os.environ['DSN'], 'user':os.environ['USER'], 'password':os.environ['PASSWORD']}, echo=True)
"""create the treenodes table. This is ia basic adjacency list model table.
in the 'byroot_tree' example."""
trees = Table('treenodes', engine,
- Column('node_id', Integer, primary_key=True),
+ Column('node_id', Integer, Sequence('tree_id_seq', optional=True), primary_key=True),
Column('parent_node_id', Integer, ForeignKey('treenodes.node_id'), nullable=True),
Column('root_node_id', Integer, ForeignKey('treenodes.node_id'), nullable=True),
Column('node_name', String(50), nullable=False),
print "Creating Tree Table:"
print "----------------------------"
-#treedata.create()
-#trees.create()
+treedata.create()
+trees.create()
def pre_exec(self, connection, cursor, statement, parameters, echo = None, compiled = None, **kwargs):
# if a sequence was explicitly defined we do it here
- if True: return
if compiled is None: return
if getattr(compiled, "isinsert", False):
for primary_key in compiled.statement.table.primary_keys:
if primary_key.sequence is not None and not primary_key.sequence.optional and parameters[primary_key.key] is None:
if echo is True or self.echo:
- self.log("select nextval('%s')" % primary_key.sequence.name)
- cursor.execute("select nextval('%s')" % primary_key.sequence.name)
+ self.log("select %s.nextval from dual" % primary_key.sequence.name)
+ cursor.execute("select %s.nextval from dual" % primary_key.sequence.name)
newid = cursor.fetchone()[0]
parameters[primary_key.key] = newid
def post_exec(self, connection, cursor, statement, parameters, echo = None, compiled = None, **kwargs):
- if True: return
if compiled is None: return
if getattr(compiled, "isinsert", False):
table = compiled.statement.table
pass
def execute(self, statement, parameters, connection = None, echo = None, typemap = None, commit=False, **kwargs):
- print "I AM HERE"
if parameters is None:
parameters = {}
if echo is True or self.echo:
self.log(statement)
self.log(repr(parameters))
- print "LOGGED"
if connection is None:
connection = self.connection()
- #connection = self.dbapi().connect(**self.connect_args()[1])
c = connection.cursor()
else:
c = connection.cursor()
- print "CONNECTION"
self.pre_exec(connection, c, statement, parameters, echo = echo, **kwargs)
- print "LALA"
if isinstance(parameters, list):
self._executemany(c, statement, parameters)
else:
self._execute(c, statement, parameters)
- print "FOO"
self.post_exec(connection, c, statement, parameters, echo = echo, **kwargs)
if commit:
- print "HOHO"
connection.commit()
- print "EEP"
return ResultProxy(c, self, typemap = typemap)
def _execute(self, c, statement, parameters):
try:
return self._threadconns[thread.get_ident()]
except KeyError:
- print "HEY"
agent = ConnectionFairy(self)
- print "HO"
self._threadconns[thread.get_ident()] = agent
return agent
def __getattr__(self, key):
return getattr(self.connection, key)
def __del__(self):
- print "LALA"
if self.connection is not None:
self.pool.return_conn(self.connection)
self.pool = None
from sqlalchemy.schema import *
import sqlalchemy
-db = sqlalchemy.engine.create_engine('postgres', {'database':'test', 'host':'127.0.0.1', 'user':'scott', 'password':'tiger'}, echo=testbase.echo)
-#db = sqlalchemy.engine.create_engine('oracle', {'DSN':'test', 'user':'scott', 'password':'tiger'}, echo=testbase.echo)
+#db = sqlalchemy.engine.create_engine('postgres', {'database':'test', 'host':'127.0.0.1', 'user':'scott', 'password':'tiger'}, echo=testbase.echo)
+db = sqlalchemy.engine.create_engine('oracle', {'dsn':os.environ['DSN'], 'user':os.environ['USER'], 'password':os.environ['PASSWORD']}, echo=testbase.echo)
class SequenceTest(PersistTest):
- def testsequence(self):
- table = Table("cartitems", db,
+
+ def setUp(self):
+ self.table = Table("cartitems", db,
Column("cart_id", Integer, Sequence('cart_id_seq'), primary_key=True),
Column("description", String(40)),
- Column("date", DateTime())
+ Column("createdate", DateTime())
)
- table.create()
+ self.table.create()
- table.insert().execute(description='hi')
- table.insert().execute(description='there')
- table.insert().execute(description='lala')
+ def testsequence(self):
+ self.table.insert().execute(description='hi')
+ self.table.insert().execute(description='there')
+ self.table.insert().execute(description='lala')
- table.select().execute().fetchall()
- table.drop()
+ self.table.select().execute().fetchall()
+
+ def tearDown(self):
+ self.table.drop()
+
if __name__ == "__main__":
unittest.main()