मैं इस क्वेरी को sqlalchemy में जेनरेट करना चाहता हूं। तालिका 'मांग' डेटाबेस में मौजूद है। एक उपक्वायर है जो जेनर_एसरीज़ फ़ंक्शन के साथ टाइमस्टेप्स उत्पन्न करता है।इस क्वेरी को sqlalchemy में कैसे उत्पन्न करें?
SELECT
timesteps.timestep AS timestep, d.count AS count
FROM
(SELECT
DATE_TRUNC('hour',date_demande) AS timestep,
COUNT(id) AS count
FROM
demande
GROUP BY
timestep
) AS d
RIGHT OUTER JOIN
(SELECT
timestep
FROM
generate_series('2010-01-01 00:00:00'::timestamp,
'2010-01-01 23:59:59'::timestamp,
'1 hour'::interval) AS timestep
) AS timesteps
ON d.timestep = timesteps.timestep
ORDER BY timestep;
मैं इस की कोशिश की है:
stmt = session.query(
func.
generate_series(
datetime.datetime(2010,1,1,0,0,0),
datetime.datetime(2010,1,1,23,59,59),
cast('1 hour',Interval())).
label('timestep')
).subquery()
print stmt
q = session.query(
stmt.c.timestep,
func.count(Demande.id)).
outerjoin((Demande, grouped==stmt.c.timestep)).
group_by(stmt.c.timestep)
print q
लेकिन यह एक InvalidRequesError साथ शिकायत: एक खंड से शामिल होने के लिए से नहीं मिल सका। मुझे लगता है कि यह सबक्वायरी के कारण होता है।
तो मैं "को उलटने के" करने के लिए क्वेरी, यह काम करता है की कोशिश लेकिन यह एक 'LEFT बाहरी शामिल हों' करता है:
q = session.query(
func.count(Demande.id),
stmt.c.timestep).
outerjoin((stmt, grouped==stmt.c.timestep)).
group_by(stmt.c.timestep)
है के रूप में कोई सही बाहरी SQLAlchemy में शामिल हों, मैं सिर्फ एक रास्ता खोजने के लिए चाहते हैं पहली तालिका के रूप में subquery लेने के लिए और 'मांग' तालिका दूसरे के रूप में लेने के लिए। इस तरह से मैं उपयोग करने के लिए वाम बाहरी शामिल हों
मैं काम पर इस कल की कोशिश करने के लिए है, आपके उत्तर के लिए धन्यवाद, यह अच्छा लगता है –
ठीक है, आपने मुझे कुछ सीखा है लेकिन मुझे अभी भी उस चीज़ को हासिल करने की आवश्यकता है जो मैं ढूंढ रहा हूं। फिर भी धन्यवाद –