Re: SQlite3 - Verbindungsobjekt bzw. Cursor in Funktion
Verfasst: Mittwoch 6. Juni 2012, 06:59
Hi mcdaniels,
habe deine Funktionen mal ausprobiert und es funktioniert doch eher suboptimal (ich hoffe du bist mit IPython vertraut):
Wie hier schon mehrmals erwähnt solltest du das "Connections Objekt" als Parameter übergeben. Auch kannst du die Datenbank auch nicht einfach in einer Funktion schließen, da das zu ungewollten Seiteneffekten führt. Hier mal deine Funktion etwas abgewandelt:
Grüße
Gerrit
habe deine Funktionen mal ausprobiert und es funktioniert doch eher suboptimal (ich hoffe du bist mit IPython vertraut):
Code: Alles auswählen
In [2]: conn = db_connect(':memory:')
In [3]: db_add_entry()
Name: bla
Kommentar: blub
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/home/gerrit/<ipython-input-3-2f82cd18e3da> in <module>()
----> 1 db_add_entry()
/home/gerrit/<string> in db_add_entry()
NameError: global name 'db_connection' is not defined
In [4]: db_connection = db_connect(':memory:')
In [5]: db_add_entry()
Name: bla
Kommentar: blub
---------------------------------------------------------------------------
OperationalError Traceback (most recent call last)
/home/gerrit/<ipython-input-5-2f82cd18e3da> in <module>()
----> 1 db_add_entry()
/home/gerrit/<string> in db_add_entry()
OperationalError: no such table: guestbook
In [6]: db_create()
In [7]: db_add_entry()
Name: bla
Kommentar: blub
In [8]: db_add_entry()
Name: foo
Kommentar: flub
---------------------------------------------------------------------------
ProgrammingError Traceback (most recent call last)
/home/gerrit/<ipython-input-8-2f82cd18e3da> in <module>()
----> 1 db_add_entry()
/home/gerrit/<string> in db_add_entry()
ProgrammingError: Cannot operate on a closed database.
Code: Alles auswählen
def db_add_entry(conn):
db_action = conn.cursor()
db_action.execute('INSERT INTO guestbook VALUES(?,?)', (raw_input("Name: "), raw_input("Kommentar: ")))
conn.commit()
Gerrit