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