2016-07-17 10 views
0

Ich bin wirklich verwirrt über die SQLite Teil, wo ich meine Datenbank ausdrucken, weil ich immer ein 'u' am Anfang jeder Zeile, es tut nicht hab 'aber nicht herum, von dem ich annehme, dass es nicht als String akzeptiert wird? Dies passiert nur auf diesem einen Programm (ich habe es auch auf anderen getestet).'u' am Anfang der Ausgabe (SQLite, Python)

überprüfte ich den Code oft (es erscheint nicht in der Datenbank, wenn ich es öffnen mit ‚SQLite Datenbank-Browser‘)

Das ist also der Code:

#!/usr/bin/python 

import sqlite3 
import os 

def list_n_convert(way): 
    if way == 'mov':#movie search 
     output = os.popen("find '/home/fugo/' -name '*.mp4' -printf '%f\n'").read() 
    word = '' 
    lyst = [] 
    for letter in output: 
     if letter != '\n': 
      word += str(letter) 
     else: 
      lyst.append(word) 
      word = '' 
    return lyst 

#Loop to create entries 
def entry_maker(lyst, column): 
    for count in range(len(lyst)): 
     cur.execute("INSERT OR IGNORE INTO myliltable ({}) VALUES (?)".format(column), (lyst[count],)) 
     con.commit() 

if __name__ == '__main__': 

    #necessities for start-up of sql-lite 
    con = sqlite3.connect('movie.db') 
    cur = con.cursor() 

    #Create a table, if it's non-existent 
    cur.execute('CREATE TABLE IF NOT EXISTS myliltable (name TEXT PRIMARY KEY, cover TEXT, genre TEXT)') 

    entry_maker(list_n_convert('mov'), 'name') 

    cur.execute('SELECT * FROM myliltable') 
    for row in cur.fetchall(): 
     print(row) #print each row in a line <--- 'ERROR' happens here 

    cur.close() 
    con.close() 

Dies ist, was die Ausgabe wie folgt aussieht:

(u'Umbra.mp4', None, None) 
(u'xd.mp4', None, None) 
(u'Nice.mp4', None, None) 
(u'Haha.mp4', None, None) 

ich werde erklären, was das Programm macht, vielleicht hilft es, den Fehler zu finden:

Die erste Funktion 'list_n_convert' sucht in meinem Home-Ordner nach Dateien mit der Endung '.mp4' und konvertiert dann das Ergebnis der Suche in Strings und fügt sie in eine Liste ein.

Der zweite führt Einträge für jedes Element in der Liste (jede mp4-Datei) in die Datenbank ein. Am Ende rufe ich die Funktionen auf und lasse jede Zeile ausgedruckt werden; Hier tritt der Fehler auf.

+0

Die Schleife in 'list_n_convert' ist ein sehr Umwegen der Neuimplementierung' lyst = output.splitlines() ':-) –

+0

Was Sie sehen, ist die Darstellung eines * Tupel *, und innerhalb dieses Tupels ist das erste Element eine Unicode-Zeichenfolge. Drucken Sie jedes Element des Tupels separat, und Sie sehen das Präfix "u" nicht mehr. Zum Beispiel versuchen Sie, 'print (row [0])' zu verwenden. – Evert

+1

Wie auch immer, Sie sehen die 'repr()' Darstellung für * Unicode * String-Objekte in einem Tupel. Das ist * völlig normales Verhalten *. Das Präfix "u" gibt den genauen Typ des Objekts an und macht es auch rundenauslösbar; Sie können diese ganze Zeichenfolge mit dem Präfix "u" in ein Python-Skript oder einen Interpreter kopieren, um den exakten Wert zu reproduzieren. –

Antwort

Verwandte Themen