[sqlalchemy] Sequences support for CYCLE and MIN/MAX values

2010-03-26 Thread Kent
Any plans to support MINVALUE, MAXVALUE, CYCLE, NOCYCLE for sequences
(for both postgres and oracle)?

I've implemented a subclass of Sequence myself, but it isn't very
elegant, because I'm not familiar enough with the code to know which
methods to override for create() output.

-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.



Re: [sqlalchemy] Sequences support for CYCLE and MIN/MAX values

2010-03-26 Thread Michael Bayer
Kent wrote:
 Any plans to support MINVALUE, MAXVALUE, CYCLE, NOCYCLE for sequences
 (for both postgres and oracle)?

 I've implemented a subclass of Sequence myself, but it isn't very
 elegant, because I'm not familiar enough with the code to know which
 methods to override for create() output.

im not familiar with those options but to implement a subclass of Sequence
with additional options, you'd also implement a subclass of
sqlalchemy.schema.CreateSequence and use @compiles to define its
compilation, as in
http://www.sqlalchemy.org/docs/reference/ext/compiler.html#dialect-specific-compilation-rules




 --
 You received this message because you are subscribed to the Google Groups
 sqlalchemy group.
 To post to this group, send email to sqlalch...@googlegroups.com.
 To unsubscribe from this group, send email to
 sqlalchemy+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/sqlalchemy?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.



Re: [sqlalchemy] Sequences support for CYCLE and MIN/MAX values

2010-03-26 Thread Michael Bayer
Kent wrote:
 Any plans to support MINVALUE, MAXVALUE, CYCLE, NOCYCLE for sequences
 (for both postgres and oracle)?

 I've implemented a subclass of Sequence myself, but it isn't very
 elegant, because I'm not familiar enough with the code to know which
 methods to override for create() output.

correction:  redefine the compilation for CreateSequence:

from sqlalchemy import *
from sqlalchemy import schema
from sqlalchemy.ext.compiler import compiles


class MySeq(Sequence):
def __init__(self, *args, **kw):
self.cycle = kw.pop('cycle', False)
super(MySeq, self).__init__(*args, **kw)

@compiles(schema.CreateSequence)
def compile(element, compiler, **kw):
if isinstance(element.element, MySeq):
return CREATE SEQUENCE %s %s % (element.element.name,
element.element.cycle and CYCLE or )
else:
return compiler.visit_create_sequence(element)






 --
 You received this message because you are subscribed to the Google Groups
 sqlalchemy group.
 To post to this group, send email to sqlalch...@googlegroups.com.
 To unsubscribe from this group, send email to
 sqlalchemy+unsubscr...@googlegroups.com.
 For more options, visit this group at
 http://groups.google.com/group/sqlalchemy?hl=en.



-- 
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.



Re: [sqlalchemy] Sequences support for CYCLE and MIN/MAX values

2010-03-26 Thread Kent Bower

Thanks for the info.

Since it is NOCYCLE in oracle and NO CYCLE in postgres, I would check 
the engine.dialect.name in the compile, method correct?


if eng.dialect.name == 'oracle':
sql +=  NOCYCLE
elif eng.dialect.name == 'postgres':
sql +=  NO CYCLE
else:
raise Exception(RSequence is only implemented 
for Oracle and PostgreSQL!)


How do I get a hold of the engine from within a Sequence object?


On 3/26/2010 2:26 PM, Michael Bayer wrote:

Kent wrote:
   

Any plans to support MINVALUE, MAXVALUE, CYCLE, NOCYCLE for sequences
(for both postgres and oracle)?

I've implemented a subclass of Sequence myself, but it isn't very
elegant, because I'm not familiar enough with the code to know which
methods to override for create() output.
 

correction:  redefine the compilation for CreateSequence:

from sqlalchemy import *
from sqlalchemy import schema
from sqlalchemy.ext.compiler import compiles


class MySeq(Sequence):
 def __init__(self, *args, **kw):
 self.cycle = kw.pop('cycle', False)
 super(MySeq, self).__init__(*args, **kw)

@compiles(schema.CreateSequence)
def compile(element, compiler, **kw):
 if isinstance(element.element, MySeq):
 return CREATE SEQUENCE %s %s % (element.element.name,
element.element.cycle and CYCLE or )
 else:
 return compiler.visit_create_sequence(element)





   

--
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.


 
   


--
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.