3
SQL AlchemyでMySQLクエリを複製しようとする中で、どのテーブルを選択するかを突き止めました。SQLAlchemy select_from単一のテーブル
作品クエリは、私は、クエリを印刷するとき、私はほとんど右のクエリ
で終わるdef all_cities():
session = connection.globe.get_session()
destination_city = aliased(City, name='destination_city')
query = session.query(City). \
select_from(Attack).\
join((Host, Attack.host_id == Host.id)).\
join((destination_city, Host.city_id == destination_city.id)).\
group_by(destination_city.id)
print query
results = [result.serialize() for result in query]
session.close()
file(os.path.join(os.path.dirname(__file__), "servers.geojson"), 'a').write(geojson.feature_collection(results))
次の関数を使用して、SQLAlchemyの中でこれを実現しようと
SELECT c.*
FROM attacks AS a INNER JOIN hosts h ON a.host_id = h.id
INNER JOIN cities c ON h.city_id = c.id
GROUP BY c.id;
です
SELECT
cities.id AS cities_id,
cities.country_id AS cities_country_id,
cities.province AS cities_province,
cities.latitude AS cities_latitude,
cities.longitude AS cities_longitude,
cities.name AS cities_name
FROM cities, attacks
INNER JOIN hosts ON attacks.host_id = hosts.id
INNER JOIN cities AS destination_city ON hosts.city_id = destination_city.id
GROUP BY destination_city.id
ただし、cities, attacks
から選択していることに注意してください...
attacks
テーブルからのみ選択するにはどうすればよいですか?
としてクエリを得ている理由ですまた
City
テーブルを照会しています都市表。 'session.query(City)'ここでは 'City'テーブルにも問い合わせています。 – 0decimal0うん、あなたはそうだった、私はちょうどそれを照会(destination_city)に切り替え、それを修正した。それは理にかなっている。ありがとう! –