we dont have a "schema" attribute on Sequence right now. we have only limited testing support for issuing CREATE statements in an alternate schema, and those are all against Postgres (since i only have oracle XE here...). adding "schema" to Sequence is ticket #584 and we also need to do ticket #726 to fully support alternate-schema sequences.
for now id say have your CREATE SEQUENCE as a literal DDL statement (i.e. use text("CREATE SEQUENCE....")) On Aug 14, 2007, at 2:57 PM, Pavel Skvazh wrote: > > I'm trying to make sequences in the Oracle database. > Here's my model > def init(): > #conf = paste.deploy.CONFIG > #uri = conf['sqlalchemy.dburi'] > if 'login' in session: > uri=1 > else: > conf = paste.deploy.CONFIG > uri = conf['sqlalchemy.dburi'] /// Admin rights here > engine = create_engine(uri, convert_unicode=True) > # meta.bind = engine > engine.echo = True > meta.connect(engine) > > application_sequence = Sequence('Application_id_seq', optional=True) > application_table = Table ( 'Application', meta, > Column('ID_Application', Integer, application_sequence, > primary_key=True), > Column('ID_Seller', Integer, nullable=False), > Column('ID_Lot', Integer, nullable=False), > Column('ID_Sell', Integer, nullable=False), > Column('Text_Application', String(2048)), > Column('Date_Start_Application', DateTime, > default=func.current_timestamp()), > Column('ID_Status', Integer), > Column('Date_Change_Application', DateTime), > Column('Date_Finish_Application', DateTime), > ForeignKeyConstraint(['ID_Sell', 'ID_Lot'], ['data.Lot.ID_Sell', > 'data.Lot.ID_Lot'], ondelete="CASCADE"), > schema='data' > ) > > Websetup is done like this > > def setup_config(command, filename, section, vars): > conf = paste.deploy.appconfig('config:' + filename) > conf.update(dict(app_conf=conf.local_conf, > global_conf=conf.global_conf)) > paste.deploy.CONFIG.push_process_config(conf) > > uri = conf['sqlalchemy.dburi_data'] // Here i log in as the Data > scheme > engine = create_engine(uri) > print "Connecting to database %s ..." % uri > model.meta.connect(engine) > > # Add some basic values into the table..... > ////// > > Everything works fine during websetup. It adds the values in the > table, since i assume it can see the Sequence. > > But during the work with the model, since it logs in as different > Schema, it cann't see the Sequence. > > After that i changed it to > application_doc_sequence = Sequence('data.APPLICATION_DOC_ID_SEQ', > optional=True) > the model can see it just well, works great. But when it comed to > websetup it fails. > > After clearing the database by hand, i decided to take a look at how > websetup will handle it from the blank database. > > Now it works, but when it comes to websetup it gives me this: > name is already used by an existing object > > As it turns out it creates a sequence named > 'data.APPLICATION_DOC_ID_SEQ', which is not exactly right i guess. > My assumption would be that they treat this string differently. Model > can see the schema to look for, but websetup takes literally as a > string but on the other hand refuses to delete it during drop_all. > > Probably that's a well known issue and it's fixed in 0.4 or maybe it's > me (which is in fact far more likely since i'm new to alchemy). > Anyway, i'd be delighted if you guys will point it out to me. > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---