VENDR is right there, in base.classes and metadata.tables. Yet,
vendorTable = base.classes.VENDR
raises an AttributeError. Odd! There's nothing cap-sensitive about
__hasattr__ that I'm forgetting, is there? Or, could I somehow alias
the name before I try to access it, if that would help at all? This is
the only table in the CMS to have a name in all caps, but I need to
access it to look up manufacturer details for items.

On 3/11/16, Mike Bayer <clas...@zzzcomputing.com> wrote:
>
> can you look in metadata.tables to see what it actually reflected ?
>
>
>
>
>
>
> On 03/11/2016 12:09 PM, Alex Hall wrote:
>> That's weird: the name I see is exactly what I've been using, "VENDR".
>> All caps and everything. I tried using lowercase, just to see what it
>> would do, but it failed.
>>
>> On 3/11/16, Mike Bayer <clas...@zzzcomputing.com> wrote:
>>>
>>>
>>> On 03/11/2016 09:39 AM, Alex Hall wrote:
>>>> Hello list,
>>>> Finally, a pure SA question from me. I'm using Automap and the "only"
>>>> keyword to automap a subset of the tables in our CMS database. This
>>>> has worked perfectly thus far. Now, though, it's failing on a specific
>>>> table, and the only difference I can see is that this table's name is
>>>> in all caps, whereas the rest are all lowercase. Capitalization
>>>> shouldn't matter, right?
>>>
>>> it does, as ALLCAPS is case sensitive and indicates quoting will be
>>> used.   How to handle this depends on the exact name that's in the
>>> database and if it truly does not match case-insensitively.
>>>
>>> Examine the output of:
>>>
>>> inspect(engine).get_table_names()
>>>
>>> find your table, and that's the name you should use.
>>>
>>>
>>>
>>>
>>> Stranger still, the actual reflection doesn't
>>>> error out. Later, where I try to assign base.classes.MYTABLE to a
>>>> variable, is where I get an AttributeError. Here's my code:
>>>>
>>>> engine = sqlalchemy.create_engine("mssql+pyodbc://%s:%s@%s"
>>>> %(username, password, dsn))
>>>> base = automap_base()
>>>> session = Session(engine)
>>>> metadata = sqlalchemy.MetaData()
>>>> desiredTables = ["table", "othertable", "VENDR"]
>>>> metadata.reflect(engine, only=desiredTables) #works fine
>>>>
>>>> table = base.classes.table #fine
>>>> table2 = base.classes.othertable #fine
>>>> vendorTable = base.classes.VENDR #AttributeError
>>>>
>>>> I've added and removed tables as I adjust this script, and all of them
>>>> work perfectly. This VENDR table is the first one in two days to cause
>>>> problems. If I iterate over all the classes in base.classes and print
>>>> each one, I don't even see it in that list, so SA isn't simply
>>>> transforming the name. This is probably a simple thing, but I don't
>>>> see the problem. Thanks for any suggestions.
>>>>
>>>
>>> --
>>> 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 sqlalchemy+unsubscr...@googlegroups.com.
>>> To post to this group, send email to sqlalchemy@googlegroups.com.
>>> Visit this group at https://groups.google.com/group/sqlalchemy.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>
> --
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to