[sqlalchemy] Re: problem autoloading PassiveDefaults under MySQL

2008-01-08 Thread Smythe

On Jan 8, 2:50 am, jason kirtland [EMAIL PROTECTED] wrote:
 This was a bug in the reflection of empty string defaults.  Give r4029
 on the trunk a try.

You're my hero -- for today, anyway.  Thanks for the fast fix!

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---



[sqlalchemy] Re: problem autoloading PassiveDefaults under MySQL

2008-01-07 Thread Smythe

On Jan 8, 12:25 am, Michael Bayer [EMAIL PROTECTED] wrote:
 passivedefaults are reflected in 0.4 just as they are in 0.3, as much  
 as the underlying database allows them to be discovered.

Thanks for the quick reply.  I reduced this to a small example and it
seems the failure I'm encountering is specifically with NOT NULL
columns that default to the empty string:

CREATE TABLE `monkey` (
  `DefaultsToEmptyString` char(8) NOT NULL DEFAULT '',
  `Id` int(11) NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB;

#!/usr/bin/env python
from sqlalchemy import Table, MetaData, create_engine
from sqlalchemy.orm import mapper, sessionmaker

class Monkey(object):
pass

engine = create_engine('mysql:...')
SessionMaker = sessionmaker(bind=engine, autoflush=True,
transactional=True)
session = SessionMaker()
metadata = MetaData(bind=engine)

monkey = Table('monkey', metadata, autoload=True)
mapper(Monkey, monkey)

george = Monkey()
george.Id = 1

session.save(george)
session.commit()

...yields the exception:
sqlalchemy.exceptions.OperationalError: (OperationalError) (1048,
Column 'DefaultsToEmptyString' cannot be null) u'INSERT INTO monkey
(`DefaultsToEmptyString`, `Id`) VALUES (%s, %s)' [None, 1]

Again, if I add a PassiveDefault('') manually into a Table(), then
everything works fine under SA, which makes me think that SA is simply
not autoload'ing my DEFAULT '' for NOT NULL columns...

--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---



[sqlalchemy] Re: problem autoloading PassiveDefaults under MySQL

2008-01-07 Thread jason kirtland

Smythe wrote:
 On Jan 8, 12:25 am, Michael Bayer [EMAIL PROTECTED] wrote:
 passivedefaults are reflected in 0.4 just as they are in 0.3, as much  
 as the underlying database allows them to be discovered.
 
 Thanks for the quick reply.  I reduced this to a small example and it
 seems the failure I'm encountering is specifically with NOT NULL
 columns that default to the empty string:
 
 CREATE TABLE `monkey` (
   `DefaultsToEmptyString` char(8) NOT NULL DEFAULT '',
   `Id` int(11) NOT NULL,
   PRIMARY KEY (`Id`)
 ) ENGINE=InnoDB;
 
 [...snip...]
 ...yields the exception:
 sqlalchemy.exceptions.OperationalError: (OperationalError) (1048,
 Column 'DefaultsToEmptyString' cannot be null) u'INSERT INTO monkey
 (`DefaultsToEmptyString`, `Id`) VALUES (%s, %s)' [None, 1]
 
 Again, if I add a PassiveDefault('') manually into a Table(), then
 everything works fine under SA, which makes me think that SA is simply
 not autoload'ing my DEFAULT '' for NOT NULL columns...

This was a bug in the reflection of empty string defaults.  Give r4029 
on the trunk a try.


--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups 
sqlalchemy group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~--~~~~--~~--~--~---