Ich möchte das Ergebnis dieser Abfrage einer Variablen zuweisen und diese Variable als Makrovariable in einer anderen SQL-Abfrage verwenden.SQL-Abfrageergebnis einer Makrovariablen in Python zuweisen
erste Abfrage:
start_week = 201619
start_date=connection.execute("""
select min(CAST(date_id as DATE)) as start_date from date_table
where CAST(week_id as INT) = %d
"""
%(start_week))
start_date = start_date.fetchone()
Das Ergebnis dieser Abfrage ist: (datetime.datetime (2017, 7, 2, 0, 0),)
2. Abfrage: Jetzt will ich nutzen dies als eine Makrovariable in der zweiten Abfrage
start_wk=connection.execute("""
select fis_week_id as start_wk from date_dim
where date_id = %s
"""
%(start_date))
Allerdings bekomme ich einen Fehler wie:
DatabaseError: (cx_Oracle.DatabaseError) ORA-00936: missing expression
[SQL: '\nselect week_id as start_wk from date_dim\nwhere date_id = (datetime.datetime(2016, 7, 4, 0, 0),)\n']
Ich würde mich freuen, wenn mir jemand zeigt, wie man das macht?
Danke!
Sie etwas sagen wollen? Bitte poste den Fehler (normalerweise die letzten Zeilen des Tracebacks) und nicht den Code. Und warum benutzt du das Cursor-Objekt nicht für 'execute()'? – Parfait
hi- Wenn ich die erste Abfrage ausführen, erhalte ich diesen Fehler: DatabaseError: (Cx_Oracle.DatabaseError) ORA-01861: Literal stimmt nicht überein Format Zeichenfolge [SQL: '\ n wählen fis_week_id als start_wk \ n von date_dim \ n wo date_id =: sdate '] [Parameter: {' sdate ':' 2016-07-04 '}] –
Siehe Aktualisierung. Für Oracle müssen Sie datetime strings mit 'to_date()' umschließen. – Parfait