Michael Bayer ha scritto:

need an example.


from sqlalchemy import *


db = create_engine('postgres://manlio:[EMAIL PROTECTED]/test')


metadata = BoundMetaData(db)
programmers = Table(
    'programmers', metadata,
    Column('name', String, primary_key=True)
    )

languages = Table(
    'languages', metadata,
    Column('name', String, primary_key=True)
    )

programmer_languages = Table(
    'programmer_languages', metadata,
    Column('programmer_name', String, ForeignKey('programmers.name')),
    Column('language_name', String, ForeignKey('languages.name')),
)

metadata.create_all()


class Programmer(object):
    def __init__(self, name):
        self.name = name

class Language(object):
    def __init__(self, name):
        self.name = name


programmersMapper = mapper(Programmer, programmers)
languagesMapper = mapper(Language, languages)


try:
    conn = db.connect()
    sess = create_session(bind_to=conn)

    guido = Programmer(name='Guido')
    bjarne = Programmer(name='Bjarne')

    python = Language('Python')
    cplusplus = Language('C++')

    sess.save(guido)
    sess.save(bjarne)
    sess.save(python)
    sess.save(cplusplus)
    sess.flush()


    i = programmer_languages.insert()
    conn.execute(
        i, programmer_name='Guido', language_name='Python'
        )

    # Find the programmers without a programming language
    query = sess.query(Programmer)
    db.echo = True
    r = query.select(
        not_(exists(
                [programmer_languages.c.programmer_name],
programmer_languages.c.programmer_name == programmers.c.name
                )
             )
        )
    db.echo = False

    print 'result:'
    for p in r:
        print p.name
finally:
    metadata.drop_all()



The generated query is:
SELECT programmers.name AS programmers_name
FROM programmers
WHERE NOT (EXISTS (SELECT programmer_languages.programmer_name AS programmer_name
FROM programmer_languages, programmers
WHERE programmer_languages.programmer_name = programmers.name)) ORDER BY programmers.name





Regards  Manlio Perillo

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

Reply via email to