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.