@DanJJo: Für Benutzereinstellungen wenn man eingeloggt ist, gibt es doch in der Regel eine eigene Seite.
Bei Deiner Beschreibung frage ich mich gerade ob Du den Login-Bereich jetzt tatsächlich in jedes Template geschrieben hast? Das sollte man natürlich nicht machen, denn dann muss man den ja an x Stellen verändern, wenn man mal etwas verändern möchte oder muss. Für so etwas gibt es in Templatesystemen so etwas wie Vererbung und/oder „includes” von anderen (Teil)Templates.
Und man kann selbstverständlich auch Weichen mit Bedingungen in ein Template einbauen, zum Beispiel wenn nicht eingeloggt, dann Eingabefelder für Name und Passwort anzeigen, sonst Name und Abmeldeschaltfläche.
Bottle, HTML Datenbankzugriff
@DanJJo:
normalerweise erstellt man ein Basis-Template, das den Grundaufbau (Menüzeile, Footer, Login-, bzw. Profil-Link, usw.)
Die eigentlichen Seiten binden jeweils dieses Template ein.
Im Basis-Template wird über %if loggedin ... entschieden, was ein eingeloggter und ein nichteingeloggter Benutzer für Links sieht.
normalerweise erstellt man ein Basis-Template, das den Grundaufbau (Menüzeile, Footer, Login-, bzw. Profil-Link, usw.)
Die eigentlichen Seiten binden jeweils dieses Template ein.
Im Basis-Template wird über %if loggedin ... entschieden, was ein eingeloggter und ein nichteingeloggter Benutzer für Links sieht.
Ok super ja danke hab ich verstanden und angefangen neu zu strukturieren jetzt aber noch eine frage...
hab nun
logged = request.get_cookie("account", secret='DuundIch') wäre in der main.py....natürlich kennt er im *.tpl logged nicht...wie wär der asuweg?
hab nun
Code: Alles auswählen
%if logged:
%name="siggned"
%_include (name, _stdout=_stdout, a='benutzerkonto')
%else:
%name="logregi"
%_include (name, _stdout=_stdout, a='login', b='register')
@DanJJo: Der Ausweg wäre natürlich das mit den anderen Daten ans Template zu übergeben.
Definiere das Feld oder die Felder als UNIQUE und fange nach dem fehlgeschlagenen Einfügen den Fehler ab.DanJJo hat geschrieben:weitere Frage....gibt es eine möglichkeit doppelte Einträge in der Datenbank zu vermeiden ohne alles mit 'if's" regeln zu müssen?
In Python nutzt man dafür Dictionaries.DanJJo hat geschrieben:gibt es in Bottlepy eine möglichkeit "switch:case" wie in java zu simulieren?
müsste sonst 32 if abfragen schreiben
Das Leben ist wie ein Tennisball.
Ich hab da mal eine Frage zu einer SQL abfrage. Angenommen ich habe folgende Tabellen
Wagen values (Name,Modell,...) , User values(Name,...) , Favorisiert values(UserName,WagenName,..)
Nun würde ich gerne eine Tabelle ausgeben, die Beinhaltet:
WagenName, Anz.der.Fav. -
leider komme ich da nicht hin
meine Ansätze
SELECT Wagen.Name, Count(Wagen.Name) FROM Wagen, User, Favorisiert WHERE User.Name=Favorisiert.UserName AND Wagen.Name = Favorisiert.WagenName.
mir ist klar, dass er bei Count(Wagen.Name) die Anzahl der Wagen Zählt, die in der Tabelle stehen aber nicht die jeweilige Anz für jeden einzelnen Wagentyp.
Ich denke, dass ich in der "Count" anweisung meine Wagen zaehlen muss aber wie nur?! kann mir da bitte einer helfen. Danke
Wagen values (Name,Modell,...) , User values(Name,...) , Favorisiert values(UserName,WagenName,..)
Nun würde ich gerne eine Tabelle ausgeben, die Beinhaltet:
WagenName, Anz.der.Fav. -
leider komme ich da nicht hin

meine Ansätze
SELECT Wagen.Name, Count(Wagen.Name) FROM Wagen, User, Favorisiert WHERE User.Name=Favorisiert.UserName AND Wagen.Name = Favorisiert.WagenName.
mir ist klar, dass er bei Count(Wagen.Name) die Anzahl der Wagen Zählt, die in der Tabelle stehen aber nicht die jeweilige Anz für jeden einzelnen Wagentyp.
Ich denke, dass ich in der "Count" anweisung meine Wagen zaehlen muss aber wie nur?! kann mir da bitte einer helfen. Danke
Zuletzt geändert von DanJJo am Mittwoch 27. Februar 2013, 13:02, insgesamt 1-mal geändert.
@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.
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.
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')]
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.
Super Danke.
Ich hab da mal eine Frage zu einer SQL abfrage. Angenommen ich habe folgende Tabellen
Wagen values (Name,Modell,...) , User values(Name,...) , Favorisiert values(UserName,WagenName,..)
Nun würde ich gerne eine Tabelle ausgeben, die Beinhaltet:
WagenName, Anz.der.Fav. -
leider komme ich da nicht hin
meine Ansätze
SELECT Wagen.Name, Count(Wagen.Name) FROM Wagen, User, Favorisiert WHERE User.Name=Favorisiert.UserName AND Wagen.Name = Favorisiert.WagenName.
mir ist klar, dass er bei Count(Wagen.Name) die Anzahl der Wagen Zählt, die in der Tabelle stehen aber nicht die jeweilige Anz für jeden einzeln
Ich hab da mal eine Frage zu einer SQL abfrage. Angenommen ich habe folgende Tabellen
Wagen values (Name,Modell,...) , User values(Name,...) , Favorisiert values(UserName,WagenName,..)
Nun würde ich gerne eine Tabelle ausgeben, die Beinhaltet:
WagenName, Anz.der.Fav. -
leider komme ich da nicht hin

meine Ansätze
SELECT Wagen.Name, Count(Wagen.Name) FROM Wagen, User, Favorisiert WHERE User.Name=Favorisiert.UserName AND Wagen.Name = Favorisiert.WagenName.
mir ist klar, dass er bei Count(Wagen.Name) die Anzahl der Wagen Zählt, die in der Tabelle stehen aber nicht die jeweilige Anz für jeden einzeln
Code: Alles auswählen
select WagenName, count(*) from Favorisiert group by WagenName
Wobei jetzt in der `Favorisiert`-Tabelle hoffentlich nicht wirklich die Benutzer- und Wagen*namen* stehen.
@ DanJJo: normalerweise hat jede Tabelle eine Spalte ID als primary key der zum Querverweis auf andere Tabellen benutzt wird.
Code: Alles auswählen
SELECT Wagen.Name, count(*) FROM Wagen, Favorisiert WHERE Wagen.id=Favorisiert.Wagen_Id GROUP BY Wagen_Id
ich bin ja klein und fang grad erst an etwas rum zu testen
also verzeih mir, dass es noch nicht optimal ist blackjack
Ich habe ein Syntaktisches Problem....
folgendes:
Ich habe ein dict mit mehreren enden.
<- import ist hierbei etwas, das ich aus meinem tpl bekomme
und einen festen Anfangsstring.
nun bekomm ich aber immer die meldung, dass die syntax nicht stimmt...liegt es an dem "import" ? dass das nicht funktioniert oder sollte das eigentlich kein problem sein?

Ich habe ein Syntaktisches Problem....
folgendes:
Ich habe ein dict mit mehreren enden.
Code: Alles auswählen
look = { "1" : "in (SELECT AutoName FROM Wagen WHERE WagenName LIKE ?),('%'+import+'%',)" ....}
und einen festen Anfangsstring.
Code: Alles auswählen
anfangsstring="""SELECT AutoName,ps,hubraum FROM Wagen WHERE WagenName """
anfangsstring+=look.get("1", "1"))
cur=db.execute(anfangsstring)
@DanJJo: Das liegt daran, dass Du in der Zeichenkette SQL- und Python-Syntax vermischst. Und die Datenbank kann mit dem Teil, den Du für Python verwenden müsstest, nichts anfangen. So ein Funktionsaufruf mit einer Variablen als Argument ist keine textuelle Ersetzung und das Ausführen des Ergebnisses als Python-Quelltext.
Ich denke es ist die Stelle in der Entwicklung erreicht, in der Du dringend über SQLAlchemy nachdenken solltest, um Anfragen nicht aus Zeichenketten zusammen zu basteln.
Ich denke es ist die Stelle in der Entwicklung erreicht, in der Du dringend über SQLAlchemy nachdenken solltest, um Anfragen nicht aus Zeichenketten zusammen zu basteln.
hmpf also besteht gar keine möglichkeit mit der überlegung, die ich hatte ?!BlackJack hat geschrieben:@DanJJo: Das liegt daran, dass Du in der Zeichenkette SQL- und Python-Syntax vermischst. Und die Datenbank kann mit dem Teil, den Du für Python verwenden müsstest, nichts anfangen. So ein Funktionsaufruf mit einer Variablen als Argument ist keine textuelle Ersetzung und das Ausführen des Ergebnisses als Python-Quelltext.
Ich denke es ist die Stelle in der Entwicklung erreicht, in der Du dringend über SQLAlchemy nachdenken solltest, um Anfragen nicht aus Zeichenketten zusammen zu basteln.

@DanJJo: Jain. *So* natürlich nicht, Du müsstest im Wörterbuch zwei Sachen hinterlegen: SQL-(Teil)Ausdruck und Wert der Eingesetzt werden soll (oder eine Funktion die diesen Wert errechnet). Wobei ``('%'+import+'%',)`` als Python-Quelltext natürlich nicht geht, weil Namen keine Python-Schlüsselwörter sein dürfen. Das heisst Du hättest diesem Namen vorher auch gar keinen Wert zuweisen können.
SQLAlchemy ist aber trotzdem besser, weil man damit deutlich schwieriger syntaktisch falsches SQL erzeugen kann (solange man nicht absichtlich „rohe” SQL-Teilausdrücke einbaut).
SQLAlchemy ist aber trotzdem besser, weil man damit deutlich schwieriger syntaktisch falsches SQL erzeugen kann (solange man nicht absichtlich „rohe” SQL-Teilausdrücke einbaut).