Hi all,
I'm using a class factory to dynamically generate SQLA types and am
rightfully getting the warning:
*SAWarning: This declarative base already contains a class with the same
class name and module name as <module.class_name>, and will be replaced in
the string-lookup table.*
when I attempt to use it twice for the same parameters. But, what I was
hoping to do was use said string-lookup table (which I can't seem to find
in base.metadata or elsewhere) in my class factory such that I can call it
as many times as I want (instead of using it once and keeping a reference),
and it would return a reference to that already-created class instead of
generating the identical new one and the subsequent warning.
Essentially I'd like something like:
def create_cls(cls_name, tablename):
if cls_name in Base.metadata.string_lookup_table:
return Base.metadata.string_lookup_table[cls_name]
<....>
return type(cls_name, (Base,), some_dynamic_attrs_n_stuff)
The given answer here
<https://stackoverflow.com/questions/11668355/sqlalchemy-get-model-from-table-name-this-may-imply-appending-some-function-to/23754464#23754464>
generates an error for Base not having an _decl_class_registry attribute
(I'm using 1.4.3 if that helps), though any solution that uses the
tablename or class/module name will work for my case.
Thanks,
Brendan
--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper
http://www.sqlalchemy.org/
To post example code, please provide an MCVE: Minimal, Complete, and Verifiable
Example. See http://stackoverflow.com/help/mcve for a full description.
---
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/sqlalchemy/c2ab6ab1-e6bd-4521-b064-28492300a6cdn%40googlegroups.com.