sqlite3 insert problem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
d4rkdr4g0n1
User
Beiträge: 8
Registriert: Montag 9. Februar 2015, 20:11

Hallo,

ich habe ein Problem mit der sqlite3 Datenbank. Ich würde gerne ein paar eintrage machen und diese auch auslesen. Ich habe einen kleinen Code geschrieben der leider nicht so Funktioniert wie ich es mir erhofft habe.

Hier mein Codefile create_db.py zur erzeugung der DB

Code: Alles auswählen

import sqlite3


#datenbank erzeugen
conn = sqlite3.connect('test.db')
print "Erfolgreich DB angelegt"

#table erzeugen mit den param.
conn.execute('''CREATE TABLE COMPANY
	(ID INTEGER PRIMARY KEY AUTOINCREMENT,
		NAME TEXT NOT NULL,
		AGE INT NOT NULL,
		ADDRESS CHAR(50),
		SALARY REAL);''')
print "Erzeuge Table"

#ein paar dummy einträge
conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) \
      VALUES ( 'Greg', 32, 'Wien', 20000.00 )");

conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) \
      VALUES ( 'Peter', 25, 'Salzburg', 15000.00 )");

conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) \
      VALUES ( 'Franz', 23, 'Tirol', 20000.00 )");

conn.execute("INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY) \
      VALUES ( 'Helga', 25, 'Steiermark', 65000.00 )");

conn.commit()
print "Eintraege erfolgreich eingetragen"
conn.close()


hier ist mein Codefile insert_db.py zum eintragen in die db

Code: Alles auswählen

import sqlite3

name = raw_input("Name: ")
age = int(input("Age: "))
address = raw_input("Address: ")
salary = int(input("Salary: "))

conn = sqlite3.connect("test.db")

conn.execute("INSERT INTO COMPANY(name, age, address, salary) values(?,?,?,?)",
	(name, age, address, salary))
und eine file zum auslesen_db.py

Code: Alles auswählen

import sqlite3

conn = sqlite3.connect("test.db")
print "Opened database successfully"

cursor = conn.cursor()
cursor.execute("SELECT * FROM COMPANY")

personen = []
for row in cursor.fetchall():
	personen.append(dict(id=row[0], name=row[1],address=row[2],salary=row[3]))
print personenaus
Das Problem ist wenn ich einen Eintrag machen will speichert es sich nicht in der db und somit kann ich es nicht auslesen.
Ich benutzte Windows 7 und python 2.7.
Zum aulesen der DB habe ich ein kleines prog. SqliteBrowser.

mfg Gregor
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@d4rkdr4g0n1: es fehlt ja auch ein commit. Aus den "input" willst Du sicher ein "raw_input" machen, und salary wolltest Du als float schreiben.
d4rkdr4g0n1
User
Beiträge: 8
Registriert: Montag 9. Februar 2015, 20:11

achhh danke schön jetzt funktioniert es
und natürlich float bei salary :)
Antworten