Leeres Feld aus SQlite DB wird in html form als / gezeigt.

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Hallo,

folgendes Problem:

ich habe eine DB Applikation in Python geschrieben, die über ein Webfrontend vewaltet wird. Funktioniert auch soweit ganz gut. Das einzige Problem ergibt sich wenn es in der DB leere Felder gibt. Diese werden im HTML Form als / angezeigt:

Code Auszug:

Code: Alles auswählen


c.execute("SELECT * FROM KETTE WHERE name = '"+str(name)+"'")

	conn.commit()

	result = c.fetchall()

	c.close()

	for row in result:

			ausgabe = ""

			ausgabe += '<div style="display:inline-block; vertical-align:top;"><h3>Name: </h3><input id="name" type="text" class="input" value='+row[1]+' /></div>'

		

	

	return ausgabe

Problem ist also wenn in row[1] nix steht wird im html form / angezeigt. Weiß jemand woran das liegt und wie man es abstellt? Denn wenn ich das Formular abschicke schreibt er mir den / in die DB der eigentlich nie vorhanden war.

Als Web Framework benutze ich bottle.

P.S Ein print row[1] zeigt nichts an.
BlackJack

@Herr Lehmann: Wenn ``row[1]`` leer ist, dann steht da ``…class="input" value= />``. Nun rate mal wo das '/' herkommen mag. ;-)

Das ist halt nicht wirklich gültiges HTML wenn ein Attribut-Wert nicht in Anführungszeichen eingefasst ist.

Ich hoffe mal ganz stark `name` kommt nicht von einem Benutzer. Der könnte damit nämlich alles möglich mit Deiner Datenbank anstellen. Werte sollte man nicht per Zeichenketten-Formatierung in SQL-Anfragen stecken, sondern die für den Datenbankadapter passenden Platzhalter und das zweite Argument von `Cursor.execute()` verwenden.

Aufaddieren einer Zeichenkette in einer Schleife ist sehr ineffizient. Sammel das lieber in einer Liste und verwende dann am Ende die `join()`-Methode auf Zeichenketten um eine daraus zu machen. Wobei das da IMHO sowieso eher in ein Template gehört.
Herr Lehmann
User
Beiträge: 81
Registriert: Samstag 14. August 2010, 22:20

Wow Danke ;)

Über das Sicherheitsrisiko bin ich mir bewusst. Wird noch abgestellt.
Antworten