Re: Question about update-records-from-instance

David Thole <[email protected]>
Newsgroups gmane.lisp.clsql.general
Message-ID <[email protected]>
Even though the docs say it this way, I wonder if it'd be more intuitive
that if :database is passed, that it overrides what's in that slot.  That
is, if they are different then do an insert, else an update.

From my standpoint, I can see this being a bit more intuitive anyways, and
useful.

-David

On Thu, Dec 17, 2009 at 4:32 PM, Thijs Oppermann
<[email protected]<thijso%[email protected]>
> wrote:

> Ah, right... I misread your original code...
>
> It seems logical, as the slot in the object that you get from your
> dbms database is set to 'dbms', when you try to
> 'update-records-from-instance' it will just try to update them in the
> view-database it already knows, which is dbms, so nothing changes...
>
> So setting the view-database slot in the object to nil seems like a
> good way to override that. On the other hand, you would maybe expect
> the :database option to 'update-records-from-instance' to override
> that...
>
> Ah, no, actually... the docs explicitly say:
>
> 'database' specifies the database in which the update is made only if
> object is not associated with a database.
>
>
> Thijs
>
> On Thu, Dec 17, 2009 at 10:06 PM, David Thole <[email protected]> wrote:
> > Thanks Thijs for the reply.
> > I looked at other alternatives, digging through the code like mad during
> > lunch today, and came up with this solution as well:
> > ...
> > (dolist (obj (query ...))
> >   (setf (slot-value obj (intern "VIEW-DATABASE" 'clsql-sys)) nil)
> >   (clsql:update-records-from ...))..
> > I found that this works pretty well too, since the slot for the object is
> > set to the database instance - which evaluates to true, so the
> > update-records-from will always execute.
> > Thanks for the tip on the debug output, I'll definitely be sure to use
> that
> > a lot, since this is a big project for me at the moment.
> > -David
> >
> > On Thu, Dec 17, 2009 at 11:16 AM, Thijs Oppermann <
> [email protected] <thijso%[email protected]>>
> > wrote:
> >>
> >> I'd start by doing:
> >>
> >> (start-sql-recording :type :both)
> >>
> >> This outputs all the statements clsql is running against the database
> >> in your REPL. Handy for debugging.
> >>
> >> For the rest, update-records-from-instance is for adding or updating
> >> based on OODML, i.e. from an object created by def-view-class. I think
> >> you need to actually build the correct sql statement if you want to do
> >> what you seem to want to do in your code snippet (sorry, hurried
> >> reply... )
> >>
> >> Gr,
> >> Thijs
> >>
> >> On Wed, Dec 16, 2009 at 10:31 PM, David Thole <[email protected]> wrote:
> >> > Hey all,
> >> > I'm trying to run the code, something like below:
> >> > (defun build-sqlite-db ()
> >> >   (with-generic-wordnet-mssql-connection (dbms)
> >> >     (with-generic-wordnet-sqlite-connection (sqlitedb)
> >> > ;      (clsql:create-view-from-class 'worddef :database sqlitedb)
> >> >
> >> >
> >> >       (dolist (obj (query-db :word "cat" :tbl 'worddef :db dbms))
> >> >         (clsql:update-records-from-instance obj :database
> sqlitedb)))))
> >> >
> >> > Error:
> >> > While accessing database #<SQLITE3-DATABASE db/wordnet.sqlite3 OPEN
> >> > {1003013921}>
> >> >
> >> >   with expression "UPDATE WORD_DEFS SET LEMMA = 'cat',POS =
> >> > 'n',DEFIN...":
> >> >
> >> >
> >> >   Error 1 / no such table: WORD_DEFS
> >> >
> >> >
> >> >   has occurred.
> >> >    [Condition of type CLSQL-SYS:SQL-DATABASE-DATA-ERROR]
> >> > The goal I'm trying to do is query from MSSQL (which works), and then
> >> > insert
> >> > the data into the sqlite database.  I wanted to generate the error, to
> >> > illustrate what the update-records is doing.  With it uncommented out,
> >> > it'll
> >> > execute just fine...just not insert records.
> >> > Is there a good way to accomplish what I'm trying to do?  I was hoping
> >> > for
> >> > an insert-records-from-instance, but couldn't find anything that did
> >> > that.
> >> > -David
> >> > _______________________________________________
> >> > CLSQL mailing list
> >> > [email protected]
> >> > http://lists.b9.com/cgi-bin/mailman/listinfo/clsql
> >> >
> >> >
> >> _______________________________________________
> >> CLSQL mailing list
> >> [email protected]
> >> http://lists.b9.com/cgi-bin/mailman/listinfo/clsql
> >
> >
>

_______________________________________________
CLSQL mailing list
[email protected]
http://lists.b9.com/cgi-bin/mailman/listinfo/clsql
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.