Speichern einer Textdatei in SQLite3-Datenbank mit python

Ich habe einige Operationen mit einer Datei mit Python gemacht. Jetzt musst du nur einen tisch mit zwei säulen erstellen … man ist für msgid und ein anderer ist für msgstr … alle msgid s sollte in msgid Spalte gespeichert werden und alle msgstr s sollte in msgstr Spalte gespeichert werden ..

Ich bin sehr neu in der Programmierwelt. Bitte helfen Sie mir. Ich habe geklebt, was ich unten getan habe:

 fn='ru.po' f=open(fn) output=[] for line in f: if not '#' in line: output.append(line) f.close() f=open(fn,'w') f.writelines(output) f.close 

  • Auto Inkrement auf Composite Primärschlüssel - Sqlite3 + Python
  • Kompilieren Sie Python 3.4 mit sqlite3
  • SQLite python aktualisiert keine Tabelle
  • Fehler beim Versuch, MySQL mit sqlalchemy (Flask) zu verbinden
  • Wie kann ich sqlite3 zu Python installieren?
  • Wie stelle ich Informationen in eine Sqlite-Datenbank mit Genie Programming Language ein?
  • Sqlite3.ProgrammingError: Falsche Anzahl der gelieferten Bindungen
  • Holen Sie die Anzahl der modifizierten Zeilen nach sqlite3 ausführen
  • One Solution collect form web for “Speichern einer Textdatei in SQLite3-Datenbank mit python”

    Es gibt 2 Teile dazu:

    1. Extrahieren des msgid und der entsprechenden msgstr Werte aus der .po-Datei.
    2. msgid msgstr msgid und msgstr in eine Tabelle in der SQLite-Datenbank ein.

    Für Teil 1 schlage ich vor, das babel Modul zu verwenden. Sie können es mit installieren

     pip install babel 

    Verwenden Sie die Funktion babel.messages.pofile.read_po() , um die .po Datei zu lesen. Dies wird einen Katalog zurückgeben, auf dem Sie über alle aus der Datei analysierten Nachrichten iterieren können:

     from babel.messages.pofile import read_po with open('ru.po') as po_file: cat = read_po(po_file) for message in cat: if message.id: print '{!r} -> {!r}'.format(message.id, message.string) 

    Für Teil 2:

     import sqlite3 conn = sqlite3.connect('catalog.db') cursor = conn.cursor() result = cursor.execute('CREATE TABLE ru (msgid TEXT, msgstr TEXT)') # bulk insert the messages messages = [(msg.id, msg.string) for msg in cat if msg.id] result = cursor.executemany('INSERT INTO ru (msgid, msgstr) VALUES (?, ?)', messages) assert(result.rowcount == len(messages)) conn.commit() result = cursor.execute("SELECT * from ru where msgid = '11 inches/sec.'") msgid, msgstr = result.fetchone() # .encode('utf8') can be removed for Python 3 print '"{}" translates to "{}"'.format(msgid, msgstr.encode('utf8')) msgid = 'A Samba password is required to export printer drivers' result = cursor.execute("SELECT * from ru where msgid = ?", (msgid,)) msgid, msgstr = result.fetchone() print '"{}" translates to "{}"'.format(msgid, msgstr.encode('utf8')) 

    Ausgabe

     "11 Zoll / Sek."  Übersetzt auf "11 дюймов / с"
     "Ein Samba-Passwort ist erforderlich, um Druckertreiber zu exportieren" übersetzt in "Для экспорта драйверов принтера требуется пароль Samba"
    

    Du musst vielleicht feststellen, dass es viele msgid s mit leeren msgstr s gibt. Wenn du sie nicht willst, dann modifizieren

     messages = [(msg.id, msg.string) for msg in cat if msg.id] 

    nach

     messages = [(msg.id, msg.string) for msg in cat if msg.id and msg.string] 
    Python ist die beste Programmiersprache der Welt.