On 16 January 2016 at 07:16, Roger Binns <rogerb at rogerbinns.com> wrote:
>
> > while p.poll() == None: resp = p.communicate() print len(resp[0]),
> > resp[0]
>
> That code doesn't make sense. communicate waits until the process
> terminates. The SQLite shell won't terminate unless it gets a quit
> command, or EOF on stdin.
>
Yeah in hindsight it wasn't the best. I was trying to do:
while still running:
p.communicate etc
Poll is not the right method to call.
> > The problem I'm trying to solve is: When my application that uses
> > an sqlite3 database gets the "database disk image is malformed" I
> > need to be able to give the user a "repair" option which dumps the
> > datrabase to an .sql file and reimport it all. I'm assuming the
> > best way is to do that via the shell rather than try and copy all
> > the dump code into my own application.
>
> Good news - here is a shell in Python I already made for you:
>
> https://rogerbinns.github.io/apsw/shell.html#shell-class
> https://github.com/rogerbinns/apsw/blob/master/tools/shell.py
Well if I get stuck then I'll have a look at that. But after I sent that
message I had a closer look at the available arguments to sqlite3.exe and
one of them stood out:
-interactive
Once I passed that to the command line as well as the database path it
started working like a normal process with the stdin and stdout pipes. So I
have what I need in terms of being able to control the sqlite3.exe from my
application.
Regards
Matt