psycopg2 PSQL SELECT 语句返回 0L 而不是 0
psycopg2 PSQL SELECT statement returning 0L instead of 0
我的 SELECT 语句产生了意外结果。
我有以下代码:
db_cursor.execute("""SELECT player.player_id, player.player_name,
COUNT(match.winner_id) as wins, COUNT(match.loser_id + match.winner_id) as total_matches
FROM player LEFT JOIN match ON player.player_id = match.winner_id
GROUP BY player.player_id
ORDER BY wins ASC""")
results = db_cursor.fetchall()
print results
打印时我得到以下输出。
[(317, 'Bruno Walton', 0L, 0L), (318, "Boots O'Neal", 0L, 0L), (319, 'Cathy Burton', 0L, 0L), (320, 'Diane Grant', 0L, 0L)]
[(318, "Boots O'Neal", 0L, 0L), (320, 'Diane Grant', 0L, 0L), (317, 'Bruno Walton', 1L, 1L), (319, 'Cathy Burton', 1L, 1L)]
0L 和 1L 是什么?我认为 'L' 只适用于非常大的数字,而不是单个数字。
抱歉,我是初学者,所以它可能真的很明显,但我们将不胜感激。如果有帮助,这是表的 psql:
CREATE TABLE IF NOT EXISTS player
(player_id SERIAL PRIMARY KEY, player_name TEXT);
CREATE TABLE IF NOT EXISTS match
(match_id SERIAL PRIMARY KEY, winner_id INTEGER references player(player_id),
loser_id INTEGER references player(player_id));
您可以在查询中添加转换运算符,即 COUNT(match.winner_id)::int 和 COUNT(match.loser_id + match.winner_id)::int。否则,您将不得不在结果集中转换该列。
db_cursor.execute("""SELECT player.player_id, player.player_name,
COUNT(match.winner_id)::int as wins, COUNT(match.loser_id + match.winner_id)::int as total_matches
FROM player LEFT JOIN match ON player.player_id = match.winner_id
GROUP BY player.player_id
ORDER BY wins ASC""")
我的 SELECT 语句产生了意外结果。
我有以下代码:
db_cursor.execute("""SELECT player.player_id, player.player_name,
COUNT(match.winner_id) as wins, COUNT(match.loser_id + match.winner_id) as total_matches
FROM player LEFT JOIN match ON player.player_id = match.winner_id
GROUP BY player.player_id
ORDER BY wins ASC""")
results = db_cursor.fetchall()
print results
打印时我得到以下输出。
[(317, 'Bruno Walton', 0L, 0L), (318, "Boots O'Neal", 0L, 0L), (319, 'Cathy Burton', 0L, 0L), (320, 'Diane Grant', 0L, 0L)]
[(318, "Boots O'Neal", 0L, 0L), (320, 'Diane Grant', 0L, 0L), (317, 'Bruno Walton', 1L, 1L), (319, 'Cathy Burton', 1L, 1L)]
0L 和 1L 是什么?我认为 'L' 只适用于非常大的数字,而不是单个数字。
抱歉,我是初学者,所以它可能真的很明显,但我们将不胜感激。如果有帮助,这是表的 psql:
CREATE TABLE IF NOT EXISTS player
(player_id SERIAL PRIMARY KEY, player_name TEXT);
CREATE TABLE IF NOT EXISTS match
(match_id SERIAL PRIMARY KEY, winner_id INTEGER references player(player_id),
loser_id INTEGER references player(player_id));
您可以在查询中添加转换运算符,即 COUNT(match.winner_id)::int 和 COUNT(match.loser_id + match.winner_id)::int。否则,您将不得不在结果集中转换该列。
db_cursor.execute("""SELECT player.player_id, player.player_name,
COUNT(match.winner_id)::int as wins, COUNT(match.loser_id + match.winner_id)::int as total_matches
FROM player LEFT JOIN match ON player.player_id = match.winner_id
GROUP BY player.player_id
ORDER BY wins ASC""")