@Micky2010: In der Zeichenkette sind drei Platzhalter, Du übergibst aber nur *ein* Objekt, nämlich eine Liste. Wenn dort mehrere Objekte übergeben werden sollen, dann müssen die in einem Tupel stecken. Dann ist das nächste Problem aber, dass der dritte Platzhalter für eine Gleitpunktzahl ist, Du aber ein Tupel übergibst. Und die 3 bei den Platzhaltern ist ziemlich sicher an der falschen Stelle.
Die Werte sollte man allerdings nicht in die Zeichenkette hineinformatieren, sondern die für den verwendeten Datenbankadapter vorgesehenen Platzhalter und das zweite Argument der `execute()`-Methode benutzen.
Last but not least solltest Du das ``global`` loswerden. Werte ausser Konstanten sollten Funktionen als Argumente übergeben werden und nicht magisch irgendwo aus der Umgebung kommen.
Die Dateiendung 'dll' für eine Datenbankdatei ist etwas ungünstig. Das ist unter Windows eine übliche Endung für dynamisch ladbare Bibliotheken mit Maschinencode, beziehungsweise seit einiger Zeit auch .NET-Bytecode.
Problem bei der Berechnung von Kommazahlen
Das hab ich geändert, aber wenn ich warte kommt dann diese Fehlermeldung:
Der Python code:
Wenn die db noch nicht da war, gents einwandfrei, aber wenns die db schon ibt, dann ist meckern angesagt für Python
LG Micky2010
Code: Alles auswählen
Bitte anzahl der 1-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 2-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 3-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 4-er eingeben.(Wenn null dann 0 eingeben):
5
Bitte anzahl der 5-er eingeben.(Wenn null dann 0 eingeben):
0
Bitte anzahl der 6-er eingeben.(Wenn null dann 0 eingeben):
6
Bitte Klasse eingeben:
5
Der Durchschnitt ist : 5.091
(5, 5.0909090909090908, 2011, 8, 13)
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\*\Desktop\Ergebnis.py", line 49, in <module>
Notenberechnung()
File "C:\Dokumente und Einstellungen\*\Desktop\Ergebnis.py", line 46, in Notenberechnung
connection.commit()
OperationalError: database is locked
Code: Alles auswählen
import sqlite3
import time
def Notenberechnung():
liste = []
for note in range(1,7):
noten = input("Bitte anzahl der %i-er eingeben.(Wenn null dann 0 eingeben):\n" % note)
liste.append(noten)
klasse = input("Bitte Klasse eingeben:\n")
nstudents = sum(liste)
n_notsum = 0
for y in range(0,6):
var = liste[y]
y_2 = var * (y + 1)
n_notsum = n_notsum + y_2
n_durchs = n_notsum / float(nstudents)
print"Der Durchschnitt ist : %.3f" % n_durchs
x = time.localtime()
Date1 = x[0:3]
Date2 = Date1[0]
Date3 = Date1[1]
Date4 = Date1[2]
Argumente = (klasse,n_durchs,Date2,Date3,Date4)
print Argumente
connection = sqlite3.connect("noten_db2.db")
cursor = connection.cursor()
cursor.execute("Select name FROM sqlite_master")
row = cursor.fetchone()
if row == None:
cursor.execute("""CREATE TABLE noten (
Klasse TEXT, Durchschnitt REAL, Date INTEGER, Date2 INTEGER, Date3 INTEGER)""")
if row != None:
pass
cursor.execute("""INSERT INTO noten VALUES (
%s, %f, %d, %d, %d )"""% Argumente)
connection.commit()
Notenberechnung()
LG Micky2010
Errare humanum est, in errore perseverare stultum (Irren ist menschlich, im Irrtum verbleiben ist dumm)
Manus manum lavat (Eine Hand wäscht die andere)
Manus manum lavat (Eine Hand wäscht die andere)
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ich tippe eher auf ein fehlendes `connection.close()` und das deshalb das lock nich aufgeraeumt wird.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Gut hab ich gemacht, das Programm schreibt aber immer noch nicht die neuen Daten in die DB!!
LG Micky2010
LG Micky2010
Errare humanum est, in errore perseverare stultum (Irren ist menschlich, im Irrtum verbleiben ist dumm)
Manus manum lavat (Eine Hand wäscht die andere)
Manus manum lavat (Eine Hand wäscht die andere)
Code: Alles auswählen
import sqlite3
import time
def Notenberechnung():
liste = []
for note in range(1,7):
noten = input("Bitte anzahl der %i-er eingeben.(Wenn null dann 0 eingeben):\n" % note)
liste.append(noten)
klasse = input("Bitte Klasse eingeben:\n")
nstudents = sum(liste)
n_notsum = 0
for y in range(0,6):
var = liste[y]
y_2 = var * (y + 1)
n_notsum = n_notsum + y_2
n_durchs = n_notsum / float(nstudents)
print"Der Durchschnitt ist : %.3f" % n_durchs
x = time.localtime()
Date1 = x[0:3]
Date2 = Date1[0]
Date3 = Date1[1]
Date4 = Date1[2]
Argumente = (klasse,n_durchs,Date2,Date3,Date4)
print Argumente
connection = sqlite3.connect("noten_db2.dll")
cursor = connection.cursor()
cursor.execute("Select name FROM sqlite_master")
row = cursor.fetchone()
if row == None:
cursor.execute("""CREATE TABLE noten (
Klasse TEXT, Durchschnitt REAL, Date INTEGER, Date2 INTEGER, Date3 INTEGER)""")
if row != None:
pass
cursor.execute("""INSERT INTO noten VALUES (
%s, %f, %d, %d, %d )"""% Argumente)
connection.close()
Notenberechnung()
Errare humanum est, in errore perseverare stultum (Irren ist menschlich, im Irrtum verbleiben ist dumm)
Manus manum lavat (Eine Hand wäscht die andere)
Manus manum lavat (Eine Hand wäscht die andere)
*kleinlaut* bekomm ich bitte noch eine antwort :K :K
LG
Micky2010
LG
Micky2010
Errare humanum est, in errore perseverare stultum (Irren ist menschlich, im Irrtum verbleiben ist dumm)
Manus manum lavat (Eine Hand wäscht die andere)
Manus manum lavat (Eine Hand wäscht die andere)