kann ich meine sqlite-Verbindung und der cursor in einer Funktion?

Ich dachte, ich würde versuchen, meine sqlite-db-Verbindung, einer Funktion anstelle von kopieren/einfügen ~6 Zeilen benötigt, um eine Verbindung herstellen und eine Abfrage ausführen, die alle über dem Platz.
Ich möchte, um es vielseitig, so kann ich mit der gleichen Funktion zum erstellen/auswählen/einfügen/etc...

Unten ist das, was ich versucht habe. Die 'EINFÜGEN' und 'CREATE TABLE' - Abfragen arbeiten, aber wenn ich einen "SELECT" - Abfrage, wie kann ich mit den Werten arbeiten, die es herunterlädt, außerhalb der Funktion?

Normalerweise würde ich gerne drucken Sie die Werte, die Sie ruft und tun auch andere Dinge mit Ihnen.

Wenn ich es wie unten bekomme ich eine Fehlermeldung

Traceback (most recent call last):
File "C:\Users\steini\Desktop\py\database\test3.py", line 15, in <module>
for row in connection('testdb45.db', "select * from users"):
ProgrammingError: Cannot operate on a closed database.

Also ich denke die Verbindung muss geöffnet sein, so kann ich die Werte aus dem cursor, aber ich brauche, um es zu schließen, damit die Datei nicht immer gesperrt.

Hier ist mein Test-code:

import sqlite3

def connection (db, arg, cubby):
    conn = sqlite3.connect(db)
    conn.execute('pragma foreign_keys = on')
    cur = conn.cursor()
    cur.execute(arg)
    for row in cur:
        cubby.append(row)
    conn.commit()
    conn.close()

cubby=[]
connection('testdb.db', "create table users ('user', 'email')", cubby)
connection('testdb.db', "insert into users ('user', 'email') values ('joey', 'foo@bar')", cubby)
for row in connection('testdb45.db', "select * from users", cubby):
    print row

Wie kann ich diese Arbeit machen?

BEARBEITEN: verändert den code ein wenig, so dass die cur-Werte, so ist es angehängt, um eine externe Liste, aber immer noch ziemlich schlecht

Schreibe einen Kommentar