fakesnow
raw JSON → 0.11.6 verified Mon Apr 27 auth: no python
Fake Snowflake Connector for Python. Run, mock and test Snowflake DB locally using DuckDB. Current version: 0.11.6. Release cadence: approximately monthly.
pip install fakesnow Common errors
error ModuleNotFoundError: No module named 'snowflake' ↓
cause Missing snowflake-connector-python dependency
fix
pip install snowflake-connector-python
error fakesnow.patch() not found ↓
cause Incorrect import; fakesnow does not export patch if imported incorrectly
fix
Use 'from fakesnow import patch' or 'import fakesnow; fakesnow.patch()'
error snowflake.connector.errors.DatabaseError: 000404 (42S02): Table ... does not exist ↓
cause Unsupported SQL feature in fakesnow (e.g., certain DDL variations)
fix
Simplify the statement or check fakesnow's supported SQL subset (see GitHub README).
Warnings
breaking Python 3.9 support dropped in v0.11.0 ↓
fix Upgrade to Python >=3.10 or pin fakesnow <0.11.0
breaking Information schema column names now uppercase (v0.10.0) ↓
fix Update queries to use uppercase column names (e.g., 'TABLE_NAME' instead of 'table_name') or wrap in double quotes
gotcha fakesnow does NOT mock all Snowflake features. Unsupported SQL may raise errors or produce incorrect results. ↓
fix Check GitHub issues/README for known limitations before relying on fakesnow for complex queries.
gotcha Always call fakesnow.patch() BEFORE importing snowflake.connector if possible, or at least before any connection attempt. ↓
fix Run 'fakesnow.patch()' at the top of your test file or conftest.py, before any snowflake imports.
Install
pip install fakesnow[server] Imports
- fakesnow wrong
from fakesnow import connectcorrectimport fakesnow - fakesnow.patch wrong
fakesnow.patch()correctfrom fakesnow import patch; patch() - snowflake.connector.connect wrong
import fakesnow; conn = fakesnow.connect(...)correctimport snowflake.connector; conn = snowflake.connector.connect(...)
Quickstart
import fakesnow
import snowflake.connector
fakesnow.patch()
conn = snowflake.connector.connect(
user='test',
password='test',
account='test',
database='MYDB',
schema='PUBLIC',
warehouse='test'
)
cur = conn.cursor()
cur.execute('CREATE TABLE users (id INT, name STRING)')
cur.execute("INSERT INTO users VALUES (1, 'Alice')")
cur.execute('SELECT * FROM users')
print(cur.fetchall())