John Lavoie wrote:
>Then your view is not *well defined*. Your database doesn't know what
>the primary key is on the view, so SQLSoup won't be able to determine
>this either. You are adding it in the ORM layer.
>
>If your database supports primary and foreign keys on views then you can
>set these up and SQLSoup will work on the view. Oracle supports this, I
>don't know about others,
>
PostgreSQL doesn't. :-(
>I think there was a thread about constraints
>and views a couple of weeks ago.
>
>
>John
>
>jose wrote:
>
>
>>Lee McFadden wrote:
>>
>>
>>
>>
>>>On 11/30/06, jose <[EMAIL PROTECTED]> wrote:
>>>
>>>
>>>
>>>
>>>
>>>>John Lavoie wrote:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>>sqlsoup is for connecting to databases where your structure is already
>>>>>defined. If you are connecting to a legacy database that you cannot
>>>>>modify, sqlsoup will automatically read the database and generate all of
>>>>>your ORM classes without any additional configuration.
>>>>>
>>>>>Of course, this assumes that you have a well defined database that has
>>>>>all primary and foreign keys defined.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>sqlalchemy already does it for me with the command:
>>>>
>>>>mytable = Table(name, database.metadata, autoload=True)
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>No, you're missing the point. There would be no need to define the
>>>table like that, you'd just do:
>>>
>>>db = SqlSoup(metadata)
>>>
>>>Then you can access all your tables via db.<tablename> as you would do
>>>with your normal table definitions. If you have a very large amount
>>>of *well defined* tables in your database then SqlSoup may save you a
>>>lot of time and typing.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>This is very interesting.
>>
>>What about views?
>>Views have no primary keys.
>>I have a view defined as:
>>
>>view['name'] = Table('name', database.metadata, autoload=True)
>>
>>class WassignedPerms(DomainObject):
>> def __str__(self):
>> return self.description or repr(self)
>>
>>assign_mapper(context, WassignedPerms, view['name'],
>> primary_key = [ view['name'].c.group_id, view['name'].c.permission_id ]
>> )
>>
>>I tried to define it using sqlsoup as:
>>----------
>>class WassignedPerms(DomainObject):
>> def __str__(self):
>> return self.description or repr(self)
>>
>>assign_mapper(context, WassignedPerms, db.name._table,
>> primary_key = [ db.name.c.group_id, db.name.c.permission_id ]
>> )
>>
>>here error message:
>> sqlalchemy.ext.sqlsoup.PKNotFoundError: table 'name' does not have a
>>primary key defined
>>
>>
>>
>>
>>
>>
>>
>
>>
>
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/turbogears?hl=en
-~----------~----~----~----~------~----~------~--~---