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