Pfad zur Datenbank-Error

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

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: 17710
Registriert: Sonntag 21. Oktober 2012, 17:20

@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: 315
Registriert: Samstag 26. Dezember 2015, 16:21

DANKE, jetzt läufts :)
Antworten