On 2013-04-11 20:44, Cousin Stanley wrote:
Cousin Stanley wrote:

   The stand-alone sqlite interpreter can first be used
   to create an empty database named some.sql3
   and create a table named  xdata  in that data base ....

     sqlite3 some.sql3 '.read xdata_create.sql'

   This step can also be done in python
   without using the stand-alone sqlite interpreter ....

Ah, that's great (and even better so I don't have to create the xdata_create.sql file) - thank you!

I collected what you wrote and put together this script:

=====================
#!/usr/bin/python

import sqlite3 as DBM
import ipdb

# ls = [ ] # this seems to be un-used ?
dbc = DBM.connect( 'some.sql3' )
cur = dbc.cursor()

fs = open( 'some.csv' )
if 0: # select whether to create new database file or query from it?
    if 0: # switch between "create table xdata" and "... if not exists"
        list_sql = [
            'create table xdata ',
            '( ',
            '  xdate  integer , ',
            '  xtime  integer , ',
            '  col1   real , ',
            '  col2   integer , ',
            '  col3   integer , ',
            '  col4   real , ',
            '  col5   integer , ',
            '  col6   integer ',
            ') ;' ]
    else:
        list_sql = [
          'create table if not exists xdata ' ,
          '( ' ,
          '  xdate  integer , ' ,
          '  xtime  integer , ' ,
          '  col1   real    , ' ,
          '  col2   integer , ' ,
          '  col3   integer , ' ,
          '  col4   real    , ' ,
          '  col5   integer , ' ,
          '  col6   integer   ' ,
          ') ; ' ]
    # ---------------------------------------------
    str_sql = '\n'.join( list_sql )
    cur.execute( str_sql )
    # ---------------------------------------------
    # Insert data from input file fs ("some.csv")
    sql = 'insert into xdata values( ? , ? , ? , ? , ? , ? , ? , ? )'
    for row in fs :
        dt, col1, col2, col3, col4,col5, col6 = row.strip().split(',' )
        xdate , xtime = dt.split( 'T' )
        xtuple = ( xdate, xtime, col1, col2, col3, col4, col5, col6 )
        cur.execute( sql , xtuple )
    dbc.commit()

else:
    list_sql = [
      'select xtime , col4' ,
      'from   xdata' ,
      'where  xtime >= 80000  and  xtime <= 81104 ; ' ]
    str_sql = '\n'.join( list_sql )
    cur.execute( str_sql )
    for row in cur :
        #ipdb.set_trace()
        # I get: TypeError: "tuple indices must be integers, not str"
        # "ipdb> row" says: "(80000, 46120.0)"
        #print row[ 'xtime' ] , row[ 'col4' ]
        print row[0] , row[1]

fs.close()
dbc.close()
=====================

I think I can learn a lot from google, based on this code - I'm very grateful for your help!

Now I just need to make a nice interface and couple it to matplotlib, so it's easy to plot - I think there's a good chance that I can come up with a good solution from here, based on the help I got from you people...

Thanks again!

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to