Returning SQL table results as JSON in python is common when building APIs or exporting data.Works across SQLite, MySQL, PostgreSQL and more.

Below are two practical methods:

Method 1: Using sqlite3 with json (Basic Example)

Converts rows from an SQLite database into JSON format using standard libraries.

python

import sqlite3import json

 

# Connect to the database

conn = sqlite3.connect(‘mydb.db’)

cursor = conn.cursor()

 

# Execute query

cursor.execute(“SELECT * FROM users”)

columns = [description[0] for description in cursor.description]

rows = cursor.fetchall()

 

# Convert to list of dictionaries

results = [dict(zip(columns, row)) for row in rows]

 

# Convert to JSON

json_output = json.dumps(results, indent=2)

print(json_output)

This works well for local SQLite files or small data exports. 

Also Read: Using Python For Data Science in 2025

Method 2: MySQL / PostgreSQL with pymysql / psycopg2

Fetches SQL results and returns JSON for external databases using DB-specific drivers.

python

import pymysqlimport json

 

conn = pymysql.connect(

    host=’localhost’,

    user=’root’,

    password=’password’,

    db=’mydb’

)

 

cursor = conn.cursor()

cursor.execute(“SELECT * FROM users”)

columns = [desc[0] for desc in cursor.description]

rows = cursor.fetchall()

 

results = [dict(zip(columns, row)) for row in rows]

 

json_output = json.dumps(results, indent=2)

print(json_output)

Swap pymysql with psycopg2 if you are using PostgreSQL, the logic remains similar. 

Tip

Use flask.jsonify() when returning JSON in a Flask API. For large datasets consider paginating results before JSON conversion to avoid memory overload.