On 4/20/15 7:11 PM, Dewey Gaedcke wrote:
Can someone point me to the attribute chain that would let me reach the Declarative class for a given table object??

In other words, using the args passed to this function:

    @event.listens_for(Column, "before_parent_attach")
    def attach(colObj, tableObj):
        prefix = tableObj.name[0:4]
        colObj.name = "%s%s" % (prefix, colObj.name)


how can I access the Declarative class that is responsible for creating this table in the first place.... that class contains an attribute I need to read but I cannot find where it lives on either the column or table objects being passed into the event-handler. I'm assuming it's via the metadata key but having no luck finding it there.....

that's not tracked because it is entirely possible to map many classes to just one Table. You would need to add something special to your Table here when you define the class; a good place would be to use the table.info dictionary.





Thanks,
Dewey



On Tuesday, December 23, 2014 at 5:07:34 PM UTC-6, Dewey Gaedcke wrote:

    Is it likely that this construct:

        @event.listens_for(Column, "before_parent_attach")
        def attach(target, cls):
            # cls is the table obj, not the declarative class
        target.name <http://target.name> = "%s%s" % (cls.name
        <http://cls.name>[0:4], target.name <http://target.name>)


    is interfering with Alembic??

    I'm getting this stack trace and it changes if I disable the event
    listener above.

    I don't actually have any columns named  "cat_cat_sit_id" so it
    looks like that prefix is being double attached???

    Thanks for any suggestions to fix this.
    Dewey

    INFO  [alembic.autogenerate.compare] Detected added foreign key
    (ctr_gem_id)(ctr_gem_id) on table cat_ctr_att

    INFO  [alembic.autogenerate.compare] Detected added foreign key
    (dtw_id)(dtw_id) on table cat_ctr_att

    INFO  [alembic.autogenerate.compare] Detected added foreign key
    (sit_id)(sit_id) on table cat_ctr_att

    Traceback (most recent call last):

      File "/Users/dgaedcke/Virtualenvs/paysys/bin/alembic", line 9,
    in <module>

        load_entry_point('alembic==0.7.2', 'console_scripts', 'alembic')()

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/config.py",
    line 399, in main

        CommandLine(prog=prog).main(argv=argv)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/config.py",
    line 393, in main

        self.run_cmd(cfg, options)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/config.py",
    line 376, in run_cmd

        **dict((k, getattr(options, k)) for k in kwarg)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/command.py",
    line 113, in revision

        script.run_env()

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/script.py",
    line 382, in run_env

        util.load_python_file(self.dir, 'env.py')

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/util.py",
    line 241, in load_python_file

        module = load_module_py(module_id, path)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/compat.py",
    line 79, in load_module_py

        mod = imp.load_source(module_id, path, fp)

      File "alembic/env.py", line 74, in <module>

        run_migrations_online()

      File "alembic/env.py", line 67, in run_migrations_online

        context.run_migrations()

      File "<string>", line 7, in run_migrations

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/environment.py",
    line 742, in run_migrations

        self.get_context().run_migrations(**kw)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/migration.py",
    line 296, in run_migrations

        for step in self._migrations_fn(heads, self):

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/command.py",
    line 95, in retrieve_migrations

        autogen._produce_migration_diffs(context, template_args, imports)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/autogenerate/api.py",
    line 145, in _produce_migration_diffs

        autogen_context, object_filters, include_schemas)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/autogenerate/api.py",
    line 247, in _produce_net_changes

        inspector, metadata, diffs, autogen_context)

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/autogenerate/compare.py",
    line 118, in _compare_tables

        inspector)

      File
    
"/usr/local/Cellar/python/2.7.8_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/contextlib.py",
    line 24, in __exit__

        self.gen.next()

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/alembic/autogenerate/compare.py",
    line 208, in _compare_columns

        if _run_filters(conn_table.c[cname], cname,

      File
    
"/Users/dgaedcke/Virtualenvs/paysys/lib/python2.7/site-packages/sqlalchemy/util/_collections.py",
    line 157, in __getitem__

        return self._data[key]

    KeyError: u'cat_cat_sit_id'

--
You received this message because you are subscribed to the Google Groups "sqlalchemy-alembic" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy-alembic+unsubscr...@googlegroups.com <mailto:sqlalchemy-alembic+unsubscr...@googlegroups.com>.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy-alembic" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy-alembic+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to