Oleg Broytman wrote:
> On Sat, Jul 03, 2010 at 11:53:00AM +0200, Till Maas wrote:
>> class PackageUpdate(SQLObject):
>> title = UnicodeCol(notNone=True, alternateID=True)
>> builds = RelatedJoin("PackageBuild")#
>>
>> class PackageBuild(SQLObject):
>> nvr = UnicodeCol(notNone=True, alternateID=True)
>> package = ForeignKey('Package')
>> updates = RelatedJoin("PackageUpdate")
>>
>> class Package(SQLObject):
>> name = UnicodeCol(alternateID=True, notNone=True)
>> builds = MultipleJoin('PackageBuild',
>> joinColumn='package_id')
>>
>>
>> This does not work,
>
> This declarations don't work? Or some code that uses them?
Sorry, I meant to add some example query here, but then realised that it is
wrong anyhow.
This is the query that does not work unexpectedly, because
query.append(PackageUpdate.q.builds == builds)
updates = PackageUpdate.select(AND(*query), orderBy=order).reversed()[:20]
creates this error:
AttributeError: PackageUpdate instance has no attribute 'builds'
>> but I cannot find any hint how I can use SQLObject to
>> get all package updates that contain builds for a certain package.
>> A SQL query would look like this:
>>
>> SELECT package_update.title
>> FROM package_update, package_build_package_update, package_build, package
>> WHERE package_update.id = package_build_package_update.package_update_id
>> AND package_build.id = package_build_package_update.package_build_id
>> AND package_build.package_id = package.id
>> AND package.name = "bash";
>
> MultipleJoin works together with a corresponding ForeignKey. .select()
> doesn't take them into account. So either you iterate over Packages row by
> row and use .builds attribute of every row, or construct the query
> manually (and pass it to .select() call), or patch SQLObject so it
> understands joins better (and submit your patches for review).
Can you maybe give me a hint how to create the query or do I have to create
the query completely as a string? Or is there some support for using custom
queries in SQLObject that make SQL-Injections impossible e.g. by using
prepared statements? Or is it possible to only add the part of the query
needed for the joing and the package.name condition as a string but create
the remainder of the query using SQL-constructs like AND(...), etc?
Regards
Till
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
_______________________________________________
sqlobject-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss