On Dec 20, 2013, at 8:45 AM, RonnyPfannschmidt <ronny.pfannschm...@gmail.com> wrote:
> The example works wonderfully, > > however i noticed, that when i attach a constraint to the column, it gets > mirrored in the table > > > so the event handler > > @event.listens_for(PString, "after_parent_attach") > def create_constraint(target, parent): > @event.listens_for(parent, "after_parent_attach") > def add_to_table(col, table): > col.constraints.add(CheckConstraint(parent != '’)) use: table.append_constraint(CheckConstraint(parent != '’)) the constraints collection on the Column is handled by the internals. > > > will result in > > CREATE TABLE fun ( > name VARCHAR(100) CHECK (name != ''), > CHECK (name != '') > ) > instead of > > CREATE TABLE fun ( > name VARCHAR(100) CHECK (name != '') > ) > > when using > > > m = MetaData() > t = Table( > 'fun', m, > Column('name', PString(100)), > ) > > e = create_engine('sqlite://', echo=1) > m.create_all(e) > m.drop_all(e) > assert 0 > > On Wednesday, December 18, 2013 5:26:53 PM UTC+1, Michael Bayer wrote: > > On Dec 18, 2013, at 5:41 AM, RonnyPfannschmidt <ronny.pfa...@gmail.com> > wrote: > > > Hi, > > > > for supporting a certain schema requirement, > > i have to create a quite a number of columns that are checked not to be a > > empty string, > > > > So i'd like to declare a custom type, which will automatically imply the > > check on those columns. > > > > I already Investigated, how Boolean does this for databases with non-native > > boolean types, > > however it uses number "private" methods, > > > > Should i follow its example or is there a official way? > > > > what i currently have to do is > > > > Column('foo', String(20), CheckConstraint("foo <> ''") > > > > what i'd like use is something like > > > > Column('foo', PString(20)) > > you’d use a TypeDecorator for this. See the example > http://docs.sqlalchemy.org/en/rel_0_9/core/types.html#coercing-encoded-strings-to-unicode > for something similar (coerces to utf-8, just replace that with checking for > non-empty). > > > > -- > 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 tosqlalchemy+unsubscr...@googlegroups.com. > To post to this group, send email to sqlalchemy@googlegroups.com. > Visit this group at http://groups.google.com/group/sqlalchemy. > For more options, visit https://groups.google.com/groups/opt_out.
signature.asc
Description: Message signed with OpenPGP using GPGMail