Wie ich nächsten mysql Code sqlalchemy übersetzen kann:SqlAlchemy Python. Von mysql sqlalchemy
SELECT
u.id AS writer_id,
u.user_login AS user_login,
m.message_id AS message_id,
m.message,
m.time
FROM
(SELECT
message_id, tm.writer_id, tm.receiver_id, message, time
FROM
test_messages tm
WHERE
(tm.writer_id = 1 AND tm.receiver_id = 2)
OR (tm.writer_id = 2 AND tm.receiver_id = 1)
ORDER BY tm.time DESC
LIMIT 10 OFFSET 0) AS m
LEFT JOIN
users u ON u.id = m.writer_id
ORDER BY (m.time);
Ich versuchte weiter:
s = select([
users.c.id,
users.c.user_login,
messages.c.message_id,
messages.c.message,
messages.c.time
]).select_from(
select([
messages.c.message_id,
messages.c.writer_id,
messages.c.receiver_id,
messages.c.message,
messages.c.time
]).where(
or_(
and_(
messages.c.writer_id == writer_id,
messages.c.receiver_id == receiver_id
),
and_(
messages.c.writer_id == receiver_id,
messages.c.receiver_id == writer_id
)
)
).select_from(
users.outerjoin(messages, users.c.id == messages.c.writer_id)
).order_by(messages.c.time.desc())
).order_by(messages.c.time)
response = await conn.execute(s)
headers = response.keys()
rows = await response.fetchall()
Probleme mit Aliase zu haben.
pymysql.err.InternalError: (1248, 'Every derived table must have its own alias')
Ich habe die ganze Unterabfrage geschrieben, aber es gibt ein Problem mit Alias. Sollte ich explizit Alias setzen oder was soll ich tun? Hilfe bitte.
Normalerweise würden Sie eine Query nicht so instanziieren, sondern über die Query-Eigenschaft einer Sitzung, oder Sie würden Core-Konstrukte wie 'select()' verwenden. Ich würde empfehlen, dass Sie die Tutorials lesen: http://docs.sqlalchemy.org/en/latest/orm/tutorial.html und http://docs.sqlalchemy.org/en/latest/core/tutorial.html. Auf Ihrem Abfragekonstrukt scheint es, als hätten Sie den Join verpasst. Ihr ursprüngliches SQL wählt aus der Unterabfrage aus, die mit dem Benutzer verbunden ist. Ihr aktuelles SQLA-Konstrukt würde sich der zu bearbeitenden Unterabfrage anschließen. –
@Ilja Everilä Ja, aber ich weiß nicht, wie man Abfrage mit Unterabfrage schreibt. Und mit beitreten. –
Deshalb sollten Sie die Tutorials lesen. Insbesondere die Teilbehandlung [Unterabfragen] (http://docs.sqlalchemy.org/en/latest/orm/tutorial.html#using-subqueries). –