On 2013-04-11 19:58, Cousin Stanley wrote:
someone wrote:

....
I want to put this table into an appropriate container
such that afterwards I want to:

1) Put the data into a mySql-table
....

   You might consider using sqlite3 as a database manager
   since it is  "batteries included"  with python ....

   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'

   where the file  xdata_create.sql  contains ....

     create table xdata
     (
      xdate  integer ,
      xtime  integer ,
      col1   real ,
      col2   integer ,
      col3   integer ,
      col4   real ,
      col5   integer ,
      col6   integer
     ) ;

Oh, thank you very much! Now I understand this (I haven't really worked much with sql before, so this was/is new to me, thanks!).

   The csv data file can then be inserted into the xdata table
   in the  some.sql3  database via python ....
........ and .......
# python data selection example
# for column 4 between 8 and 9

I combined both code snippets into:

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

import sqlite3 as DBM
import ipdb

fs = open( 'some.csv' )
ls = [ ]
dbc = DBM.connect( 'some.sql3' )
cur = dbc.cursor()
if 0:
    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 <= 90000 ; ' ]
    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 don't fully understand it yet, but it's nice to see that it works! Thank you very much for that! Now I'll have to concentrate on figuring out how/why it works :-)

   You can be creative with the data selections
   and pass them off to be plotted as needed ....

Yes, I understand. Thank you very much. As you can see, on my system I had to use:

        print row[0] , row[1]

instead of:

        print row[ 'xtime' ] , row[ 'col4' ]

I'm not sure exactly why - is it because you have another version of sqlite3 ? This is a bit strange, but anyway I can live with that - at least for now...

   If mysql is used instead of sqlite3
   you should only have to monkey with
   the data type declarations in xdata_create.sql
   and the  dbc.connect  strings in the python code ....

Actually I didn't knew anything about this sqlite3 before now. This is the first time I try it out, so I don't really know what's the difference between sqlite3 and mysql...

But thank you very much for providing some code I can now study and learn from !!! Much appreciated....



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

Reply via email to