How to insert multiple rows in SQLite Dbase

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Fri Mar 28 19:09:34 EDT 2008


En Fri, 28 Mar 2008 18:05:29 -0300, afandi <afandimscit at gmail.com>  
escribió:

> Generally, it involves SQL statement such as
>  follow
>
>  INSERT INTO <tablename>(field1,field2,.......fieldn) VALUES
>  ('abc','def'...........)
>
>  If I have data taken from Apache Server Log,let say 100 lines which
> is printed output of 8 fields such
>  as:
>
> data 1
> IP: 61.5.65.101
> Date: 26/Sep/2007
> Time: 20:43:25
> GMT: +0900
> Requestt: GET /index.php?option=com_content&task=view&id=55&Itemid=19
> HTTP/1.1
> ErrorCode: 200
> Bytes: 6458
> Referel:http://www.joomla.org/index.php?
> option=com_content&task=view&id=35&Itemid=19
> Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4)
> Gecko/20070515 Firefox/2.0.0.4
>How toI insert into SQLite database? by using SQL statement.TQ

sqlite3 allows for named parameters; see  
http://docs.python.org/lib/sqlite3-Cursor-Objects.html

You should build a list of dictionaries, with a dictionary per log entry,  
and call the executemany cursor method. Assuming you have a table created  
like this:

create table log (
   IP text,
   EntryDate timestamp,
   Requestt text,
   ErrorCode integer )

you should build a list like this:
values = [
   {'ip': '61.5.65.101',
    'date': a datetime object combining all parts,
    'request': "GET /index.php?op...",
    'errorcode': 200,
   },
   {'ip': '21.5.65.101',
    'date': a datetime object,
    'request': "...",
    'errorcode': 200,
   },
   ...
   ]

and execute:
cur.executemany("insert into log (IP, EntryDate, Requestt, ErrorCode)  
values (:ip, :date, :request, :errorcode)", values)

-- 
Gabriel Genellina




More information about the Python-list mailing list