Ich versuche, einen Microservice für einen RESTful Web-Service zu schreiben. Ich habe eine Datenbank in 'Postgresql' erstellt und derzeit Flask und psycopg2 (für die Konvertierung von Db-Objekt zu Json-Objekt). Folgendes ist ein Teil meines Codes, aber aus irgendeinem Grund bekomme ich einen Fehler. Die URI, die ich versuche zu etablieren, ist ungefähr so. localhost/events/20171222
Was sollte der richtige Weg sein, damit umzugehen?Problem beim Erstellen eines Endpunkts in Flask mit Python
Code:
app = Flask(__name__)
conn = psycopg2.connect("dbname='postgresdb'")
cur = conn.cursor(cursor_factory=RealDictCursor)
@app.route('/events/<dated>', methods=['GET'])
def getDatedEvents(dated):
date_obj = datetime.strptime(dated, '%Y%m%d')
#print(type(date_obj))
#print(date_obj)
cur.execute("""
SELECT event_id, timestamp
FROM event_tbl
WHERE timestamp < date_obj
ORDER BY timestamp
LIMIT 25
""")
return json.dumps(cur.fetchall(), default=json_serial)
Fehlerausgang:
psycopg2.ProgrammingError: column "date_obj" does not exist
LINE 4: WHERE timestamp < date_obj
^
localhost - - [22/Dec/2017 17:22:29] "GET /events/20161020 HTTP/1.1" 500 -
Oh danke Kumpel :) @py_dude –
@GabbarSingh Sie können diese Antwort als richtig markieren, wenn es Ihnen geholfen hat :) –
"formatieren" Sie die Abfrage nicht, so erstellen Sie eine SQL Injection-Schwachstelle in Ihrem Code. Verwenden Sie Abfrageparameter: https://stackoverflow.com/questions/1466741/parameterized-queries-with-psycopg2-python-db-api-and-postgresql – leovp