How to put a text file in sqlite just using the Python API?

I have a tab delimited file in the format:

sentenceID (sid) documentID (scid) sentenceText (sent) 

eg.

 100004 100 ๅณไพฟๆ‚จๅ–œ็ˆฑๆต่ฟž้…’ๅง๏ผŒไนŸๅฎš็„ถๅœจ่ฟ™่ฝปๆพๅฎ‰้—ฒ็š„ไธ€้š…๏ผŒๆฅไธ€ๅœบ็”œ่œœๆฒ‰้†‰็š„็บฆไผšใ€‚ 100005 100 ๆ‚จๅฏไปฅๆ…ขๆ…ขๆŽข็ฉถ่œๅ•ไธŠๆ‰€ๆœ‰็š„็ง˜ๅฏ†ๆƒŠๅ–œใ€‚ 

I want to put it in sqlite3 with the following schema:

 CREATE TABLE sent ( sid INTEGER PRIMARY KEY, scid INTEGER, sent TEXT, ); 

Is there a quick way to use the python API for sqlite ( http://docs.python.org/2/library/sqlite3.html ) to put them in a table?

I did it as such:

 #!/usr/bin/python # -*- coding: utf-8 -*- import sqlite3 as lite import sys, codecs con = lite.connect('mycorpus.db') with con: cur = con.cursor() cur.execute("CREATE TABLE Corpus(sid INT, scid INT, sent TEXT, PRIMARY KEY (sid))") for line in codecs.read('corpus.tab','r','utf8'): sid,scid,sent = line.strip().split("\t") cur.execute("INSERT INTO Corpus VALUES("+sid+","+scid+"'"+sent+"')") 
+4
source share
2 answers

Here is an example of using unicodecsv :

 #!/usr/bin/python # -*- coding: utf-8 -*- import sqlite3 import unicodecsv con = sqlite3.connect('mycorpus.db') cur = con.cursor() cur.execute("CREATE TABLE Corpus(sid INT, scid INT, sent TEXT, PRIMARY KEY (sid))") with open('corpus.tab', 'rb') as input_file: reader = unicodecsv.reader(input_file, delimiter="\t") data = [row for row in reader] cur.executemany("INSERT INTO Corpus (sid, scid, sent) VALUES (?, ?, ?);", data) con.commit() 

See also:

Hope this helps.

+3
source
  #!/usr/bin/python # -*- coding: utf-8 -*- import sqlite3 as lite con = lite.connect('myCorpus.db') cur = con.cursor() cur.execute("CREATE TABLE Corpus(sid INT, scid INT, sent TEXT, PRIMARY KEY (sid))") data=[row.split('\t') for row in file('myfile.tab','r').readlines()] cur.executemany("INSERT INTO Corpus (sid, scid,sent) VALUES (?, ?, ?);", data) con.commit() 
+4
source

Source: https://habr.com/ru/post/1480864/


All Articles