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:

  • Probleme bei der Installation von Süden mit Django (South_Migrationhistory Tabellen werden nicht erstellt)
  • Django Inlineformset - 'CapForm' Objekt hat kein Attribut 'cleaned_data'
  • String-Multiplikation im Vergleich zu Loop
  • Ein FigureCanvasQTAgg, das in einem QMdiSubWindow segfaults verschachtelt ist, wenn ich das QMdiSubWindow minimiere
  • Übergeben Sie eine benutzerdefinierte queryset an Serializer in Django Rest Framework
  • Kivy: Drag n drop, erhalten Datei Pfad
  •  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 

  • DockerDaemonConnectionError beim Festlegen von Google Cloud Managed VM in Ubuntu
  • GAE Python NDB .put nicht synchron auf Entwicklung (aber arbeitet in der Produktion)?
  • Wie schreibe ich eine Liste zu xlsx mit openpyxl
  • Umwandlung eines Strings in eine Liste von Tupeln
  • Upgrade von transaction.commit_manually () auf Django> 1.6
  • PyQt: Widgets erhalten, um die Größe automatisch in einem QDialog zu ändern
  • 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.