Bottle, HTML Datenbankzugriff

Django, Flask, Bottle, WSGI, CGI…
Sirius3
User
Beiträge: 18255
Registriert: Sonntag 21. Oktober 2012, 17:20

@DanJJo: Du mußt es nur richtig machen. »import« ist ein reserviertes Wort und darf nicht als Variablennamen benutzt werden.
Was willst Du mit der zweiten 1 bei look.get("1","1") bewirkten?

Code: Alles auswählen

WHERE_CLAUSE = {1: ("WagenName in (SELECT AutoName FROM Wagen WHERE WagenName LIKE ?)", lambda imp: ('%'+imp+'%',)) }
abfrage="SELECT AutoName,ps,hubraum FROM Wagen WHERE "
where, convert_arguments = WHERE_CLAUSE.get(1, ('1', lambda arg: ()))
cur.db.execute(abfrage+where, convert_arguments(import_))
BlackJack

Mich würde ja eher interessieren was die Abfrage insgesamt bewirken soll. Es gibt eine Tabelle `Wagen` mit Spalten `AutoName` und `WagenName` und dann *diese* Abfrage!?
DanJJo
User
Beiträge: 90
Registriert: Mittwoch 13. Februar 2013, 18:35

BlackJack hat geschrieben:@DanJJo: Das sollte eigentlich überhaupt nicht nötig sein wenn Du bei Texten durchgehend mit dem `unicode`-Typ arbeitest. Vor allem sollte eine Abfrage immer ein `unicode`-Objekt liefern.

Code: Alles auswählen

In [14]: cur.execute('select Vorname, Nachname from personen')
Out[14]: <sqlite3.Cursor at 0x8fddaa0>

In [15]: cur.fetchall()
Out[15]: [(u'Max', u'Mustermann')]
Und beim Eintragen erwartet SQLite UTF-8 kodierte `str`-Objekte oder `unicode`-Objekte.

Etwas global zu definieren, so dass alle Kodierungen auf magische Weise passieren geht nicht. Die „magic line” gibt an wie der Quelltext kodiert ist und muss mit der tatsächlichen Kodierung des Quelltextes überein stimmen. Das ist aber nur für den Compiler wichtig, zur Laufzeit hat diese Angabe keine Auswirkung.

hmpf bringt mich irgendwie nicht weiter, da ich immer wieder einen Fehler bekomme.

Code: Alles auswählen

WagenName = request.forms.get('wgn').decode('utf-8')
an anderer Stelle hab ich

Code: Alles auswählen

@route('Wagen/<WagenName>')
im Browser URL FELd WIRd angezeigt ../Wagen/ÖMW aber der Browser selbst liefer den Fehler

Error: 500 Internal Server Error

Sorry, the requested URL 'http://localhost:8080/Wagen/%C3%96mw' caused an error:

wo liegt mein problem?
Zuletzt geändert von DanJJo am Freitag 1. März 2013, 11:56, insgesamt 2-mal geändert.
Sirius3
User
Beiträge: 18255
Registriert: Sonntag 21. Oktober 2012, 17:20

@DanJJo: wie sollen wir aus diesem unzusammenhängenden Angaben irgendwie ableiten können, an welcher Stelle nicht das passiert, was Du erwartest?
Wenn Du eine Route Wagen/... definierst, findet er natürlich den Link user/... nicht.
DanJJo
User
Beiträge: 90
Registriert: Mittwoch 13. Februar 2013, 18:35

sorry sollte natürlich Wagen heißen...

bei User tritt nur das gleiche problem mit den Umlauten auf..

also ich speicher irgendwann den Namen des Wagens in meiner DB und wenn ich auf die seite des Wagens gehen möchte kommt dieser fehler...

EDIT*:

Habs selbst gelöst -> Lösung

Code: Alles auswählen

@route("/Wagen/<Wagenname>")
   wagenname = wagenname.decode('utf-8')
es reicht nicht die daten beim einfügen in die DB zu decoden. In den Routen muss es nochmals geschehen.
Antworten