[omaha] Django question

Jeff Hinrichs - DM&T jeffh at dundeemt.com
Fri Jun 15 21:09:05 CEST 2012


Although not a walk in the park, I am with Shawn.  There are other gotcha's
you are going to run into if you continue down the "a pickled sqlite db for
everyone" road.

Best,

Jeff

On Fri, Jun 15, 2012 at 11:41 AM, Shawn Hermans <shawnhermans at gmail.com>wrote:

> I can't think of any other easy solutions to the problem.  I looked at the
> libanki code and it looks like the database code is spread throughout the
> library.  I also uses raw SQL rather than something like SQLAlchemy or the
> Django ORM. This means it is not trivial to simply use a different database
> in place of SQLite.  So, I can't really think of an easy solution to the
> problem.
>
> Now I can think of a not easy solution. You could fork the libanki code
> base and port it over to use SQLAlchemy or Django's ORM.  I pulled out the
> tables from the source code and it doesn't look too bad.  It looks like you
> have 5 tables/models.  Something to think about at least.
>
> Cheers,
> Shawn
>
> create table if not exists col (
>    id              integer primary key,
>    crt             integer not null,
>    mod             integer not null,
>    scm             integer not null,
>    ver             integer not null,
>    dty             integer not null,
>    usn             integer not null,
>    ls              integer not null,
>    conf            text not null,
>    models          text not null,
>    decks           text not null,
>    dconf           text not null,
>    tags            text not null
> );
>
> create table if not exists notes (
>    id              integer primary key,
>    guid            text not null,
>    mid             integer not null,
>    mod             integer not null,
>    usn             integer not null,
>    tags            text not null,
>    flds            text not null,
>    sfld            integer not null,
>    csum            integer not null,
>    flags           integer not null,
>    data            text not null
> );
>
> create table if not exists cards (
>    id              integer primary key,
>    nid             integer not null,
>    did             integer not null,
>    ord             integer not null,
>    mod             integer not null,
>    usn             integer not null,
>    type            integer not null,
>    queue           integer not null,
>    due             integer not null,
>    ivl             integer not null,
>    factor          integer not null,
>    reps            integer not null,
>    lapses          integer not null,
>    left            integer not null,
>    odue            integer not null,
>    odid            integer not null,
>    flags           integer not null,
>    data            text not null
> );
>
> create table if not exists revlog (
>    id              integer primary key,
>    cid             integer not null,
>    usn             integer not null,
>    ease            integer not null,
>    ivl             integer not null,
>    lastIvl         integer not null,
>    factor          integer not null,
>    time            integer not null,
>    type            integer not null
> );
>
> create table if not exists graves (
>    usn             integer not null,
>    oid             integer not null,
>    type            integer not null
> );
>
>
>
> On Fri, Jun 15, 2012 at 11:13 AM, Steve Young <wereapwhatwesow at gmail.com
> >wrote:
>
> > >
> > > ... You might want to look at making deck a session variable.
> >
> >
> > So now I am trying to accomplish just that.  deck seems to be an
> > instancemethod because when I try to add it to the request.session it
> gives
> > a:
> >
> > Can't pickle <type 'instancemethod'>: attribute lookup
> > __builtin__.instancemethod failed
> >
> > I found some suggestions about adding __getstate__ and __setstate__ to
> the
> > class to make the instancemethod pickable, but  haven't been successful
> > with those either.  (not 100% sure I am implementing this correctly) The
> > only progress I made was using a shell to get a little different pickle
> > error:
> >
> > PicklingError: Can't pickle <class 'sqlalchemy.orm.session.Session'>:
> it's
> > not the same object as sqlalchemy.orm.session.Session
> >
> > I also tried Shawn's suggestion about encoding deck, with base64.encode
> and
> > base64.encodestring but got TypeErrors with both.
> >
> > Since this is becoming so difficult, and I don't see much info online
> when
> > searching for these issues, it makes me think I am not taking the correct
> > approach.  Or maybe I should work some more on the pickling issue...  Any
> > ideas are welcome.  Thanks for everyone's help so far.
> >
> > Steve
> > _______________________________________________
> > Omaha Python Users Group mailing list
> > Omaha at python.org
> > http://mail.python.org/mailman/listinfo/omaha
> > http://www.OmahaPython.org
> >
> _______________________________________________
> Omaha Python Users Group mailing list
> Omaha at python.org
> http://mail.python.org/mailman/listinfo/omaha
> http://www.OmahaPython.org
>



-- 
Best,

Jeff Hinrichs
402.218.1473


More information about the Omaha mailing list