[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] problem autoloading PassiveDefaults under MySQL

2008-01-07 Thread Smythe

I'm using mysql-5.1.15, sqlalchemy-0.4.2, mysql-python-1.2.2.

In SA-0.3, the docs read:

When Tables are reflected from the database using autoload=True, any
DEFAULT values set on the columns will be reflected in the Table
object as PassiveDefault instances.

This is not indicated behavior for 0.4.  Is there any way to reproduce
this behavior short of manually transcribing each defaulting Column
into my Table definitions with PassiveDefault() as below?

Table('sometable', somemetadata,
Column('DefaultsToFoo', Unicode, PassiveDefault('Foo')),
autoload=True)

TIA,

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---