Die Datenbank hat einen ASCII-Fehler gemeldet.noisefloor hat geschrieben:Hallo,
Wo hinzufügen? In Quelltext oder in den zu speichernden Daten?meego hat geschrieben:Muss ich das meinem .py file hinzufügen, damit Umlaute akzeptiert werden?
Peewee und Bottle
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
dann poste doch mal den zugehörigen Code und die volle Fehlermeldung.
Gruß, noisefloor
dann poste doch mal den zugehörigen Code und die volle Fehlermeldung.
Gruß, noisefloor
Hallo
Mit
geht's.
"SyntaxError: Non-ASCII character '\xc3' in file xpeewee.py on line 122, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details"
Ich habe Mühe über das Bottle-Peewee-Plugin testweise Daten abzurufen:
Mit
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os, sys
"SyntaxError: Non-ASCII character '\xc3' in file xpeewee.py on line 122, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details"
Ich habe Mühe über das Bottle-Peewee-Plugin testweise Daten abzurufen:
Code: Alles auswählen
app = Bottle()
db = PeeweePlugin('sqlite:///x.db')
@route('/test')
def test():
for room in Roomtype.select():
print room
app.install(db)
if __name__ == '__main__':
run(host='localhost', port=8080, debug=True, reloader=True)
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
ich gehe mal davon aus, dass Zeile 122 im vollen Listing die mit dem `print` Statement ist? Das geht unter Python 2 davon aus, dass es nur ASCII-Zeichen bekommt, wenn man kein Encoding angibt. Details: siehe Link von jens.
Gibt es eigentlich einen bestimmten Grund, warum du kein Python 3 benutzt?
Gruß, noisefloor
ich gehe mal davon aus, dass Zeile 122 im vollen Listing die mit dem `print` Statement ist? Das geht unter Python 2 davon aus, dass es nur ASCII-Zeichen bekommt, wenn man kein Encoding angibt. Details: siehe Link von jens.
Gibt es eigentlich einen bestimmten Grund, warum du kein Python 3 benutzt?
Gruß, noisefloor
Code: Alles auswählen
File "x.py", line 17, in my_function
return Roomtype.get(Roomtype.id == 1).roomtype_de
NameError: global name 'Roomtype' is not defined
Code: Alles auswählen
from bottle import Bottle, route, get, post, request, run, template
from bottle_peewee import PeeweePlugin
app = Bottle()
db = PeeweePlugin('sqlite:///x.db')
@route('/my_function')
def my_function():
return Roomtype.get(Roomtype.id == 1).roomtype_de
app.install(db)
@meego: Natürlich bekommst Du diesen Fehler, das ist absolute Grundlage von Python das alle Namen irgendwo definiert sein müssen bevor man sie verwendet. Also braucht man mit Ausnahme der direkt in Python ”eingebauten” Namen entsprechenden Code der einen Namen bekannt macht. Wo ist denn das bei `Roomtype` in Deinem Code der Fall? Woher soll Python wissen was damit gemeint ist?
Hi Blackjack
Ich dachte halt das Plugin macht die DB-Tabellennamen irgendwo bekannt.
Die Doku ist leider sehr spärlich:
https://pypi.python.org/pypi/bottle-peewee
Ich dachte halt das Plugin macht die DB-Tabellennamen irgendwo bekannt.
Die Doku ist leider sehr spärlich:
https://pypi.python.org/pypi/bottle-peewee
@meego: Die Dokumentation ist deshalb spärlich weil das Plugin so gut wie nichts macht ausser dem Handling des Zyklus für einen einzelnen Request/Response, eben das man sich das nicht bei jedem mal selbst schreiben muss. Ansonsten ist das `database`-Attribut halt das Pewee-Datenbankobjekt. Das war's auch schon (fast). Alles andere steht in der Pewee-Dokumentation.
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Das ist ja mal ein denkbar schlapper Grund. Ob du `python` tipps oder `python3` spielt ja wohl mal keine Rolle. Und ab Ubuntu 15.10 wird wohl Python 3 das Default-Python unter Ubuntu Aber egal, ist ein anderes Thema.meego hat geschrieben:Naja, es ist nicht Standard in Ubuntu. Man muss es explizit aufrufen.
Gruß, noisefloor
Hi
Also ich habe jetzt so ziemlich alle Varianten durchspekuliert..
Also ich habe jetzt so ziemlich alle Varianten durchspekuliert..
Code: Alles auswählen
app = Bottle()
db = PeeweePlugin('sqlite:///x.db')
global db
@route('/my_function')
def my_function():
return db.database.Roomtype.get(Roomtype.id == 1).roomtype_de
app.install(db)
return db.database.Roomtype.get(Roomtype.id == 1).roomtype_de
AttributeError: 'SqliteDatabase' object has no attribute 'Roomtype'
@meego: Wo hast *Du* denn die Klasse `Roomtype` definiert? Alternativ: Wo in der Dokumentation steht das Du die nicht definieren musst, sondern die auf irgendeine magische Weise irgendwo (ja wo denn?) existiert? Du scheinst hier das Code-Raten auf die Spitze zu treiben und Dir einfach mal so Magie zu wünschen und zu hoffen irgendeine zusammegwürfelte Variante von Code den Du gerne mit einer solchen Bedeutung hättest, würde schon funktionieren.
Hi
In einer anderen .py-Datei mit der ich die DB erzeuge, ich dachte das Plugin kann die Tabellennamen auslesen:
Ich muss also anders vorgehen?
In einer anderen .py-Datei mit der ich die DB erzeuge, ich dachte das Plugin kann die Tabellennamen auslesen:
Code: Alles auswählen
import os, sys
from bottle import Bottle
from bottle_peewee import PeeweePlugin
from peewee import Model, ForeignKeyField, CharField, TextField, IntegerField, BooleanField, DateTimeField, DateField, TimeField
import datetime
app = Bottle()
db = PeeweePlugin('sqlite:///x.db')
class BaseModel(Model):
class Meta:
database = db.proxy
class Roomtype(BaseModel):
roomtype_de = CharField(max_length=80)
roomtype_en = CharField(max_length=80)
hint_de = CharField(max_length=250)
hint_en = CharField(max_length=250)
app.install(db) # unklar: befähigt was?
db.database.create_tables([Roomtype])
roomtypes = [
{'roomtype_de': 'bla'},
{'roomtype_de': 'bla'},
]
with db.database.atomic():
Roomtype.insert_many(roomtypes).execute()
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Gruß, noisefloor
Nee, damit machst du das Plugin nur deiner Bottle-Applikation "bekannt".meego hat geschrieben:Vielleicht mit app.install(db) ?
Gruß, noisefloor
- noisefloor
- User
- Beiträge: 3856
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
wenn die Doku dir das nicht verrät, den wirf' das Modul weg und nimm' ein anderes
Gruß, noisefloor
wenn die Doku dir das nicht verrät, den wirf' das Modul weg und nimm' ein anderes
Gruß, noisefloor