python-noob - which container is appropriate for later exporting into mySql + matplotlib ?

someone newsboost at gmail.com
Fri Apr 12 10:19:06 EDT 2013


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!




More information about the Python-list mailing list