Last modified: Sep 22, 2026

Fetchone Python SQLite: Retrieve Single Rows

Introduction to fetchone

In Python's SQLite, the fetchone() method is used to retrieve the next row of a query result. It returns a single row (as a tuple or Row object) or None if no more rows are available. This method is ideal when you want to process one record at a time.

Before diving into fetchone, ensure you understand basic SQLite operations in Python. If not, refer to our guide on Python SQLite Example: Simple Database Operations.

Basic Syntax and Usage

The syntax for fetchone is straightforward:


# Example: Fetch a single row from a query result
import sqlite3

conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Execute a SELECT query
cursor.execute("SELECT * FROM users")

# Fetch the first row
row = cursor.fetchone()
print(row)

conn.close()

This code connects to a database, executes a query, and retrieves the first row. The output will be the first row of the users table.

How to Handle Results

fetchone() returns None when there are no more rows. Always check for this to avoid errors:


# Example: Check for None before processing
cursor.execute("SELECT * FROM users WHERE id = 1")
row = cursor.fetchone()

if row is None:
    print("No records found.")
else:
    print("Found:", row)

Output:


Found: (1, 'Alice', 30)

This ensures your code handles empty results gracefully.

Looping Through Results with fetchone

Use a while loop to process all rows iteratively:


# Example: Loop through all rows using fetchone
cursor.execute("SELECT name, age FROM users")

while True:
    row = cursor.fetchone()
    if row is None:
        break
    print(f"Name: {row[0]}, Age: {row[1]}")

Output:


Name: Alice, Age: 30
Name: Bob, Age: 25
Name: Charlie, Age: 35

This approach is memory-efficient for large datasets.

When to Use fetchone vs Other Methods

Compare fetchone() with fetchall() and fetchmany():

  • fetchone(): Retrieves a single row.
  • fetchall(): Retrieves all rows at once.
  • fetchmany(size): Retrieves a specified number of rows.

Use fetchone() for scenarios like pagination, real-time processing, or when only one row is needed.

Common Issues and Best Practices

  • Connection Management: Always close the connection after use.
  • Row Factory: Use sqlite3.Row to access columns by name:

# Example: Access columns by name
conn = sqlite3.connect('example.db')
conn.row_factory = sqlite3.Row
cursor = conn.cursor()

cursor.execute("SELECT * FROM users")
row = cursor.fetchone()
print(row['name'], row['age'])

Output:


Alice 30
  • Parameterized Queries: Prevent SQL injection using placeholders. Learn more in our paramstyle guide.

Conclusion

The fetchone() method is a powerful tool for retrieving single rows from SQLite in Python. By understanding its behavior and integrating it with loops and error checks, you can efficiently handle database results. Pair it with proper connection management and parameterized queries to build robust applications. Practice with the examples above to master this essential function.