Seite 3 von 3

Re: Bottle, HTML Datenbankzugriff

Verfasst: Donnerstag 28. Februar 2013, 13:36
von Sirius3
@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_))

Re: Bottle, HTML Datenbankzugriff

Verfasst: Donnerstag 28. Februar 2013, 13:50
von 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!?

Re: Bottle, HTML Datenbankzugriff

Verfasst: Freitag 1. März 2013, 11:30
von DanJJo
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?

Re: Bottle, HTML Datenbankzugriff

Verfasst: Freitag 1. März 2013, 11:51
von Sirius3
@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.

Re: Bottle, HTML Datenbankzugriff

Verfasst: Freitag 1. März 2013, 11:57
von DanJJo
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.