Here's the source code of my test - let me know if I'm doing anything wrong
here

from sqlalchemy import create_engine
from sqlalchemy.orm import mapper
from sqlalchemy.sql.expression import join
from sqlalchemy.orm.session import sessionmaker
from sqlalchemy.schema import MetaData
import traceback

try:
    import clr
    import os
    import sys
    sys.path.append(os.path.join(os.path.abspath(os.path.curdir),'sqlite'))
    clr.AddReference('Ironpython.Sqlite')  #need this for sqlite to work on
ironpython. refers to a dll in zip file.
except:
    #not ipy
    pass
#from sqlalchemy.ext.sqlsoup import SqlSoup #sqlsoup also errors

engine = create_engine('sqlite:///moviedemo_simple.db3')  #moviedemo file
also in zip file.
Session = sessionmaker(bind=engine)
class Movies(object):
    pass
class Directors(object):
    pass
class Genres(object):
    pass
class MoviesAndDirectors(object):
    pass

meta = MetaData()
meta.reflect(bind=engine)
all_tables = meta.tables

movies_table = all_tables['movies']
genres_table = all_tables['genres']
directors_table = all_tables['directors']
md_table = all_tables['movie_directors']

mapper(Movies,movies_table)
mapper(Directors,directors_table)
mapper(Genres,genres_table)

session = Session()
print session.query(Movies).all()[0]
print session.query(Directors).all()[0]

j = join(movies_table,md_table).join(directors_table)
try:
    mapper(MoviesAndDirectors,j)#ipy errors here
    mad1 = session.query(MoviesAndDirectors).all()[0]
    print mad1
except Exception, e:
    print 'caught exception',e
    last_error = e
    traceback.print_exc()

how can i run the sqlalchemy test suite?  I see it needs nose, i've
installed that.  but i'm not clear what command to run to launch tests.

rgds,
harry

On Tue, Jul 6, 2010 at 6:40 PM, Harry Percival <harry.perci...@gmail.com>wrote:

> Hi Michael,
>
> thanks for replying - the reason I attached a zipfile is because sqlite
> isn't supported natively on ironpython, so I've had to include the source
> and a dll for it.  So, if you did have time to open it up and take a peek,
> I'd very much appreciate it.
>
> Alternatively, how can I run the sqla unit tests?
>
>
> On Tue, Jul 6, 2010 at 3:56 PM, Michael Bayer <mike...@zzzcomputing.com>wrote:
>
>>
>> On Jul 6, 2010, at 4:18 AM, Harry Percival wrote:
>>
>> Hi,
>>
>> I've got an error which occurs in ironpython but not in cpython. can
>> anyone replicate?  See attached. I'm using IPY 2.6.
>>
>> *<string>:1: DeprecationWarning: object.__init__() takes no parameters
>>> for type _keyed_weakref
>>> <string>:1: DeprecationWarning: object.__init__() takes no parameters for
>>> type KeyedRef
>>> <Movies object at 0x0000000000000034>
>>> <Directors object at 0x0000000000000038>
>>> caught exception 'NoneType' object has no attribute 'set'
>>> Traceback (most recent call last):
>>>  File "D:\workspace\resolver\test_multitable.py", line 54, in <module>
>>>    mapper(MoviesAndDirectors,j)#ipy errors here
>>>  File "D:\workspace\resolver\sqlalchemy\orm\__init__.py", line 818, in
>>> mapper
>>>    return Mapper(class_, local_table, *args, **params)
>>>  File "D:\workspace\resolver\sqlalchemy\orm\mapper.py", line 210, in
>>> __init__
>>>    self._configure_properties()
>>>  File "D:\workspace\resolver\sqlalchemy\orm\mapper.py", line 563, in
>>> _configure_properties
>>>    self._configure_property(column_key,
>>>  File "D:\workspace\resolver\sqlalchemy\orm\mapper.py", line 755, in
>>> _configure_property
>>>    prop.instrument_class(self)
>>>  File "D:\workspace\resolver\sqlalchemy\orm\properties.py", line 87, in
>>> instrument_class
>>>    attributes.register_descriptor(
>>>  File "D:\workspace\resolver\sqlalchemy\orm\attributes.py", line 1424, in
>>> register_descriptor
>>>    manager.instrument_attribute(key, descriptor)
>>>  File "D:\workspace\resolver\sqlalchemy\orm\attributes.py", line 1012, in
>>> instrument_attribute
>>>    self.install_descriptor(key, inst)
>>>  File "D:\workspace\resolver\sqlalchemy\orm\attributes.py", line 1054, in
>>> install_descriptor
>>>    setattr(self.class_, key, inst)
>>>  File "D:\workspace\resolver\sqlalchemy\orm\attributes.py", line 151, in
>>> __set__
>>>    self.impl.set(instance_state(instance), instance_dict(instance),
>>> value, None)
>>> AttributeError: 'NoneType' object has no attribute 'set'
>>> *
>>
>>
>>
>>
>> does this look like a bug with ironpython? if so, I'll report it to the
>> developers, but i need a little more help tracking down exactly what's going
>> wrong...
>>
>>
>> its likely some slightly different behavior in ironpython regarding
>> descriptors.   If you don't have a lot of SQLA experience, it would be
>> extremely difficult to get SQLA running with a new Python interpreter.
>> Getting it to run on Jython took a huge amount of effort and weeks/months of
>> bughunting, both in SQLA and Jython itself.  We currently don't have any
>> resources to get it to work on IronPython as well.
>>
>>
>>
>> For bonus points:  In the attached database, there's a many-to-many
>> relationship between 'movies' and 'directors' via a simple joining table.
>>  How come SQLA isn't able to figure this out on its own and let me just
>> join(movies_table, directors_table)? It seems unneccesary to have to specify
>> the extra join(movies_table,md_table).join(directors_table)...
>>
>>
>> I don't generally open full zipfiled applications, so if you want to
>> attach a succinct, single-file code example that would help.   If you have
>> relationships between two classes, the relationship() function is used to
>> establish that, which would allow query.join(Movie.directors) to generate
>> the joins automatically.
>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "sqlalchemy" group.
>> To post to this group, send email to sqlalch...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> sqlalchemy+unsubscr...@googlegroups.com<sqlalchemy%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/sqlalchemy?hl=en.
>>
>
>
>
> --
> ------------------------------
> Harry J.W. Percival
> ------------------------------
> Italy Mobile: +39 389 095 8959
> UK Mobile:  +44 (0) 78877 02511 (may be turned off)
> Skype:         harry.percival
> Email:          harry.perci...@gmail.com
>



-- 
------------------------------
Harry J.W. Percival
------------------------------
Italy Mobile: +39 389 095 8959
UK Mobile:  +44 (0) 78877 02511 (may be turned off)
Skype:         harry.percival
Email:          harry.perci...@gmail.com

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

Reply via email to