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