On Aug 4, 2011, at 1:08 PM, Randy Syring wrote:

> FWIW, I tried the map_to() method but still received the PK error.
> The following method, however, worked fine:
> 
> ss = SqlSoup(db.engine)
> meta = ss._metadata
> tbl_vrmf = sa.Table("vRMF", meta, autoload=True)
> vrmf_pks = [tbl_vrmf.c.dateId, tbl_vrmf.c.ident, tbl_vrmf.c.mnum]
> vrmf = ss.map(tbl_vrmf, primary_key=vrmf_pks)


yeah SqlSoup is really kind of up in the attic for me, if you'd like to propose 
some patches to make it work more nicely for things like that we are open.


> 
> On Jun 10, 8:18 pm, Michael Bayer <mike...@zzzcomputing.com> wrote:
>> On Jun 9, 2011, at 12:41 AM, Reece Hart wrote:
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>>> I'd like to use SqlSoup with an existing database that contains views.
>>> Accessing a table goes swimmingly, but accessing a view results in
>>> "PKNotFoundError: table '[viewname]' does not have a primary key
>>> defined..."
>> 
>>> Do I correctly infer that SqlSoup does not work with database views (by
>>> default, at least)? I've been unable to find anything directly relevant
>>> on Google, SO, or the SqlAlchemy mailing list. If you were faced with
>>> this, how would you proceed if you wanted to access non-updatable views?
>>> I'm new to SQLAlchemy and SQLSoup.
>> 
>>> Here's a specific example:
>> 
>>>        from sqlalchemy.ext.sqlsoup import SqlSoup
>>>        u = SqlSoup('postgresql+psycopg2://pub...@unison-db.org:5432/unison')
>>>        seq = u.pseq.filter(u.pseq.pseq_id==76).all() # okay
>>>        aliases = u.pseqalias.filter(u.pseqalias.pseq_id==76).all()
>>>        PKNotFoundError: table 'pseqalias' does not have a primary key 
>>> defined...
>> 
>> You would need to pass the columns to be considered part of the primary key 
>> to the underlying mapper, using sqlsoup.map_to(), but unfortunately there is 
>> not a simple interface for that at the moment, since you need the Table 
>> object as well to get at the columns.   So until this interface could be 
>> improved, for now it would look like:
>> 
>> metadata = u._metadata
>> t = Table("pseqaliases", metadata, autoload=True)
>> 
>> u.map_to("pseqaliases", selectable=t, mapper_args={"primary_key":[t.c.col1, 
>> t.c.col2]})
>> 
>> This is just the "primary_key" argument to mapper, there are some examples 
>> athttp://www.sqlalchemy.org/docs/orm/mapper_config.htmlnear the top.
> 
> -- 
> 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 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

-- 
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 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to