On Mon, May 7, 2018 at 11:31 AM, Rich Shepard <rshep...@appl-ecosys.com> wrote: > The module, models.py, has five classes. Each has table constraints: three > have a single table constraint, one has two table constraints, and one has > seven table constraints. SA seems to reject more than four table > constraints. > > With the last three commented out, there's no error: > > __table_args__ = ( > CheckConstraint( > wtemp_unit.in_(['C', 'F']), > atemp_unit.in_(['C', 'F']), > vel_unit.in_(['ft/sec','m/sec']), > disc_unit.in_(['cfs','cms']), > #depth_unit.in_(['in', 'ft', 'cm', 'm']), > #width_unit.in_(['in', 'ft', 'cm', 'm']), > #slope_unit.in_(['deg', '%']) > ), > )
the CHECK constraint only accepts a single SQL expression. Above, it looks like you re looking to add a CHECK constraint for each expression: __table_args__ = ( CheckConstraint(wtemp_unit.in_(['C', 'F'])), CheckConstraint(atemp_unit.in_(['C', 'F'])), # etc. ) > > But, when I allow the fifth there's a problem: > > $ ./openEDMS.py Traceback (most recent call last): > File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line > 682, in __getattr__ > return getattr(self.comparator, key) > AttributeError: 'Comparator' object has no attribute 'constraints' > > During handling of the above exception, another exception occurred: > > Traceback (most recent call last): > File "./openEDMS.py", line 18, in <module> > import models > File "/home/rshepard/development/openEDMS/models.py", line 144, in > <module> > class Physical(Base): > File "/home/rshepard/development/openEDMS/models.py", line 178, in > Physical > depth_unit.in_(['in', 'ft', 'cm', 'm']), > File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line > 2791, in __init__ > self._set_parent_with_dispatch(table) > File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/base.py", line 431, > in _set_parent_with_dispatch > self._set_parent(parent) > File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line > 2708, in _set_parent > Constraint._set_parent(self, table) > File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/schema.py", line > 2553, in _set_parent > parent.constraints.add(self) > File "/usr/lib/python3.6/site-packages/sqlalchemy/sql/elements.py", line > 688, in __getattr__ > key) > AttributeError: Neither 'BinaryExpression' object nor 'Comparator' object > has an attribute 'constraints' > > I've looked in the docs and searched the web without finding mention of a > limit. Looking at the list of constraints I'm not seeing syntatic > differences in the latter three. Please show me what I've missed. > > Rich > > -- > 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 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. -- 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 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.