Flask APP - Daten, die mit Handy gemacht wurden, werden nicht aus DB geladen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Hallo zusammen, ich habe gerade ein sehr merkwürdiges Problem.

Mein erstes Projekt ist so weit fertig und ich teste es gerade.

Projekt ist eine Flask APP, die auf Heroku gehostet wird. Die Datenbank ist postgresql. Storage für Bilder liegt bei Amazon s3.

Registrierte User können sich einloggen und Zimmer in die DB einstellen, nach diesen Zimmern kann dann über die Stadt gesucht werden.

Problem:

Wenn ein User ein Zimmer über das Handy einstellt, wird das Zimmer einwandfrei in die DB eingetragen, jedoch wird es nicht angezeigt wenn man danach sucht. Zimmer die mit dem PC eingestellt wurden werden ohne Probleme gefunden.

Hier:

1 und 4 sind mit dem Handy eingestellt worden, und werden nicht aus der DB geladen, wenn man nach Zimmern in "dortmund" sucht.
2 und 3 sind mit dem PC eingestellt worden. Diese werden ganz normal geladen, wenn man nach Zimmern in der Stadt "dortmund" sucht.

Bild

Ich habe leider nicht den Hauch eine Ahnung wie das möglich ist, denn die Einträge in der DB sind nicht anders als die mit dem PC.
BlackJack

@Zoja: Wie soll man denn dazu jetzt etwas sagen können? Du musst halt die üblichen Methoden zur Fehlersuche anwenden, also Dein Programm Schritt für Schritt durchgehen und an jeder Stelle schauen was Deiner Meinung nach passieren müsste und dann prüfen ob das tatsächlich passiert. Bis Du die erste Stelle findest wo die Realität von der Erwartung voneinander abweicht. Und dann musst Du versuchen heraus zu finden warum das so ist. Steht denn irgendwas auffälliges im Fehlerprotokoll des Webservers? Falls nicht, ist sichergestellt, das Fehler/Ausnahmen dort überhaupt protokolliert werden? Wenn Du Zwischenergebnisse protokollieren lässt, sind das, die die Du erwartest? Laufen alle Unit-Tests durch?
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

BlackJack hat geschrieben:@Zoja: Wie soll man denn dazu jetzt etwas sagen können? Du musst halt die üblichen Methoden zur Fehlersuche anwenden, also Dein Programm Schritt für Schritt durchgehen und an jeder Stelle schauen was Deiner Meinung nach passieren müsste und dann prüfen ob das tatsächlich passiert. Bis Du die erste Stelle findest wo die Realität von der Erwartung voneinander abweicht. Und dann musst Du versuchen heraus zu finden warum das so ist. Steht denn irgendwas auffälliges im Fehlerprotokoll des Webservers? Falls nicht, ist sichergestellt, das Fehler/Ausnahmen dort überhaupt protokolliert werden? Wenn Du Zwischenergebnisse protokollieren lässt, sind das, die die Du erwartest? Laufen alle Unit-Tests durch?
Ich werde mir die logs von heroku angucken, ich dachte jemand hatte ein ähnliches Problem. Weil es für mich absolut nicht verständlich ist wie das überhaupt möglich ist. Ich habe keine errors.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Zoja: niemand weiß hier, welche expliziten oder impliziten Bedingungen Du hier an die Datenbankabfrage hast. Irgendwelche Leerzeichen, die Du hier nicht siehst, art ist bei 1 und 4 anders, infofeld enthält Leerzeichen, Hausnummer besteht aus 3 Zeichen, etc., etc. Man kann beliebig unverständlich Programmieren, dass jeder einzelne Punkt zu einem Fehler führt, der aber irgendwo stillschweigend verschluckt wird.
Zoja hat geschrieben:Ich werde mir die logs von heroku angucken
Normalerweise lädt man sich die Daten in seine Test-Datenbank und debugged lokal.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Sirius3 hat geschrieben:@Zoja: niemand weiß hier, welche expliziten oder impliziten Bedingungen Du hier an die Datenbankabfrage hast. Irgendwelche Leerzeichen, die Du hier nicht siehst, art ist bei 1 und 4 anders, infofeld enthält Leerzeichen, Hausnummer besteht aus 3 Zeichen, etc., etc. Man kann beliebig unverständlich Programmieren, dass jeder einzelne Punkt zu einem Fehler führt, der aber irgendwo stillschweigend verschluckt wird.
Zoja hat geschrieben:Ich werde mir die logs von heroku angucken
Normalerweise lädt man sich die Daten in seine Test-Datenbank und debugged lokal.
Aber wie soll ich das lokal testen, wenn die Daten von einem Handy reingestellt werden, die Daten in der DB sind ja in Ordnung, wenn ich exakt 1 zu 1 die selben Daten, die mit dem Handy nicht gehen in die DB mit dem PC eintrage, dann werden diese angezeigt. Einfach nur mysteriös. ich arbeite aber dran und werde berichten wie ich vorankomme. Es hat sich für mich son angefühlt, als ob es was Grundlegendes sein könnte, deswegen habe ich direkt gefragt.
BlackJack

@Zoja: Deswegen solltest Du ja auch eine 1:1 Kopie der Daten von Heruko in die lokale Datenbank einspielen. Da hast Du ja Daten drin die vom Mobiltelefon aus eingegeben wurden.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Sirius3 hat geschrieben:@Zoja: niemand weiß hier, welche expliziten oder impliziten Bedingungen Du hier an die Datenbankabfrage hast. Irgendwelche Leerzeichen, die Du hier nicht siehst, art ist bei 1 und 4 anders, infofeld enthält Leerzeichen, Hausnummer besteht aus 3 Zeichen, etc., etc. Man kann beliebig unverständlich Programmieren, dass jeder einzelne Punkt zu einem Fehler führt, der aber irgendwo stillschweigend verschluckt wird.
Zoja hat geschrieben:Ich werde mir die logs von heroku angucken
Normalerweise lädt man sich die Daten in seine Test-Datenbank und debugged lokal.
Sirius3 hat geschrieben:Irgendwelche Leerzeichen
Ich weiß nicht ob es noch jemanden interessiert, aber es lag an dem Leerzeichen, komischerweise wird beim Handy ein Leerzeichen eingefügt.

Da stellt sich die Frage, gibt es eine Möglichkeit auf DB Ebene z.b. in der models datei dafür zu sorgen, dass Leerzeichen etc. nicht in die columns eingetragen werden?

Was ich jetzt mache ist in der Hauptdatei, überall wo etwas in die DB geschrieben wird, vorher noch ein .strip() einzufügen.
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Zoja: bevor man Daten in eine Datenbank schreibt, sollte man sie prüfen und gegebenenfalls bereinigen. Die Logik dahinter ist meist zu komplex, als dass man das auf Datenbankebene machen möchte.
Zoja
User
Beiträge: 145
Registriert: Freitag 28. Februar 2014, 14:04

Sirius3 hat geschrieben:@Zoja: bevor man Daten in eine Datenbank schreibt, sollte man sie prüfen und gegebenenfalls bereinigen. Die Logik dahinter ist meist zu komplex, als dass man das auf Datenbankebene machen möchte.
Vielen Dank!
Antworten