Pfad zur Datenbank-Error

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
DMD-OL
User
Beiträge: 168
Registriert: Samstag 26. Dezember 2015, 16:21
Wohnort: Oldenburg (Oldenburg)

Donnerstag 15. Juni 2017, 17:50

hi
Ich speichere in den Ordner:

"C:\Users\DMD-OL\Desktop\SYSTEM\Getränke\Wein\QR_Codes.db"

eine Datenbank QR_Codes.db, auf dem der Zugriff funktioniert, solange ich keine Umlaute verwende.

Wenn ich das mache, gibt es einen 'OperationalError: unable to open database file'.
Die Pfad zur Datenbank wird korrekt ausgelen:

"C:\Users\DMD-OL\Desktop\SYSTEM\Getränke\Wein\QR_Codes.db".

Zum Auslesen hier mein Code:

Code: Alles auswählen

desktopFile = os.path.expanduser("~\Desktop")
path_grund = desktopFile+'\\Material- & Zeiterfassung\\SYSTEM\\Materialerstellung'
path_speicher = desktopFile+'\\Material- & Zeiterfassung\\Materiallisten'
folderpath = path_grund+'\\QR-Codes'

solo_List = []
for i in os.listdir(folderpath):
    if i not in solo_List:
        solo_List.append(i)

for mat_Namenser in solo_List:
    path_qr = path_grund+'\\QR-Datenbank'+"\\"+mat_Namenser+"\\Cola"
    SQL_QR = '%s\\QR_Codes.db'  %(path_qr)

    print SQL_QR

    conn = sqlite3.connect(SQL_QR)
    cursor = conn.cursor()
    conn.execute('''CREATE TABLE IF NOT EXISTS QR_Codes(ID INTEGER PRIMARY KEY AUTOINCREMENT, QR_LISTE TEXT, PICTURE BLOB,TYPE TEXT,FILE_NAME TEXT,QR_TEXT TEXT);''')
    cursor = conn.cursor()
    cursor.execute('''SELECT QR_LISTE, PICTURE, TYPE, FILE_NAME, QR_TEXT FROM QR_Codes WHERE QR_LISTE = ?''', (mat_Namenser,))
    result = cursor.fetchall()
    print result
    conn.close()
Ich bekomme es nicht hin, da ja eigentlich alles richtig ist?
Zuletzt geändert von Anonymous am Donnerstag 15. Juni 2017, 17:57, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 7626
Registriert: Sonntag 21. Oktober 2012, 17:20

Donnerstag 15. Juni 2017, 18:37

@DMD-OL: Pfade setzt man mit os.path.join zusammen und nicht mit +. Es wäre sehr ungewöhnlich, wenn listdir mehrfach Dateien mit dem selben Namen zurückliefert. Die Variablennamen sind eine wilde Mischung aus verschiedenen Sprachen und Abkürzungen. Die Namen sollten klar sagen, für was sie da sind.

Code: Alles auswählen

DESKTOP_PATH = os.path.expanduser("~/Desktop/Material- & Zeiterfassung")
SYSTEM_PATH = os.path.join(DESKTOP_PATH, "SYSTEM", "Materialerstellung")
LISTS_PATH = os.path.join(DESKTOP_PATH, "Materiallisten")
FOLDER_PATH = os.path.join(SYSTEM_PATH, "QR-Codes")

for materials in os.listdir(FOLDER_PATH):
    database_name = os.path.join(SYSTEM_PATH, "QR-Datenbank", materials, "Cola", "QR_Codes.db")
    print database_name
DMD-OL
User
Beiträge: 168
Registriert: Samstag 26. Dezember 2015, 16:21
Wohnort: Oldenburg (Oldenburg)

Samstag 17. Juni 2017, 15:51

DANKE, jetzt läufts :)
Antworten