Python psycopg2 check row exists
postgresql, psycopg2, python, sql
Solution
Don't use `fetchall()` (which returns a list, which is never 'larger than 0'), use `fetchone()`:
def track_exists(self, track_id):
cur = self.conn.cursor()
cur.execute("SELECT fma_track_id FROM tracks WHERE fma_track_id = %s", (track_id,))
return cur.fetchone() is not None
`fetchone()` returns `None` if there is nothing to fetch, and testing against `is not None` gives you a handy boolean value to return directly.
Problem
In Python psycopg2 how can I check if a row exists? ``` def track_exists(self, track_id): cur = self.conn.cursor() cur.execute("SELECT fma_track_id FROM tracks WHERE fma_track_id = %s", (track_id,)) if cur.fetchall() > 0: return true else: return false ``` Currently I am getting ``` Traceback (most recent call last): File "<stdin>", line 1, in <module> File "mumu.py", line 38, in track_exists if cur.fetchall() > 0: TypeError: 'NoneType' object has no attribute '__getitem__' ```