{"library":"prefect-snowflake","title":"Prefect Snowflake Integration","description":"The `prefect-snowflake` library provides Prefect 2.x integrations for interacting with Snowflake, enabling users to define flows that connect to Snowflake databases, execute queries, and manage data. It currently ships as version 0.28.7 and follows the Prefect ecosystem's release cadence, often aligning with Prefect core releases.","language":"python","status":"active","last_verified":"Sun May 17","install":{"commands":["pip install prefect-snowflake"],"cli":null},"imports":["from prefect_snowflake.connections import SnowflakeConnector"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import os\nimport asyncio\nfrom prefect import flow, task\nfrom prefect_snowflake.connections import SnowflakeConnector\n\n@task\nasync def run_snowflake_query(connector_block: SnowflakeConnector, query: str):\n    \"\"\"\n    Executes a Snowflake query using the provided connector block.\n    \"\"\"\n    # snowflake-connector-python is synchronous, so it must be run in a thread pool\n    # when used within an async Prefect task/flow.\n    async with connector_block.get_connection() as conn:\n        result = await conn.run_sync(lambda c: c.cursor().execute(query).fetchall())\n        return result\n\n@flow\nasync def snowflake_example_flow(query: str = \"SELECT CURRENT_VERSION()\"):\n    \"\"\"\n    An example Prefect flow that connects to Snowflake and runs a query.\n    \"\"\"\n    block_name = \"my-snowflake-connector-agent\"\n\n    # Create and save a SnowflakeConnector block programmatically.\n    # In a real-world scenario, you might load a pre-configured block\n    # from the Prefect UI or directly pass connection details.\n    connector = SnowflakeConnector(\n        account=os.environ.get(\"SNOWFLAKE_ACCOUNT\", \"your_account_id\"),\n        user=os.environ.get(\"SNOWFLAKE_USER\", \"your_user\"),\n        password=os.environ.get(\"SNOWFLAKE_PASSWORD\", \"your_password\"),\n        warehouse=os.environ.get(\"SNOWFLAKE_WAREHOUSE\", \"your_warehouse\"),\n        database=os.environ.get(\"SNOWFLAKE_DATABASE\", \"your_database\"),\n        schema=os.environ.get(\"SNOWFLAKE_SCHEMA\", \"PUBLIC\"),\n        role=os.environ.get(\"SNOWFLAKE_ROLE\", \"PUBLIC\"),\n    )\n    # Save the block; overwrite if it already exists from a previous run\n    await connector.save(block_name, overwrite=True)\n\n    # Load the block (even if just saved, this is how you'd normally load it)\n    snowflake_connector_block = await SnowflakeConnector.load(block_name)\n\n    # Run the query task\n    result = await run_snowflake_query(snowflake_connector_block, query)\n    print(f\"Snowflake Query Result for '{query}': {result}\")\n\nif __name__ == \"__main__\":\n    # To run this flow, ensure you have set the SNOWFLAKE_* environment variables\n    # or replace the os.environ.get calls with actual credentials.\n    # Example:\n    # export SNOWFLAKE_ACCOUNT=\"YOUR_ACCOUNT.region.azure\" (or just YOUR_ACCOUNT_NAME)\n    # export SNOWFLAKE_USER=\"YOUR_USER\"\n    # export SNOWFLAKE_PASSWORD=\"YOUR_PASSWORD\"\n    # export SNOWFLAKE_WAREHOUSE=\"YOUR_WAREHOUSE\"\n    # export SNOWFLAKE_DATABASE=\"YOUR_DATABASE\"\n    # export SNOWFLAKE_SCHEMA=\"YOUR_SCHEMA\"\n    # export SNOWFLAKE_ROLE=\"YOUR_ROLE\"\n\n    # Run the flow (requires an event loop, so asyncio.run is appropriate for direct execution)\n    asyncio.run(snowflake_example_flow())\n","lang":"python","description":"This quickstart demonstrates how to create a `SnowflakeConnector` block programmatically, save it, load it, and use it within a Prefect flow to execute a Snowflake query. It uses environment variables for sensitive credentials and handles the synchronous nature of `snowflake-connector-python` within an async Prefect task.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"0.28.5","pypi_latest":"0.28.7","is_stale":true,"summary":{"python_range":"3.10–3.9","success_rate":50,"avg_install_s":25.2,"avg_import_s":null,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"prefect-snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"prefect-snowflake","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":27.4,"import_time_s":null,"mem_mb":null,"disk_size":"320M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"prefect-snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"prefect-snowflake","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":26.9,"import_time_s":null,"mem_mb":null,"disk_size":"348M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"prefect-snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"prefect-snowflake","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":21.6,"import_time_s":null,"mem_mb":null,"disk_size":"336M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"prefect-snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"prefect-snowflake","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":20.8,"import_time_s":null,"mem_mb":null,"disk_size":"333M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"prefect-snowflake","exit_code":1,"wheel_type":null,"failure_reason":"build_error","import_side_effects":null,"install_time_s":null,"import_time_s":null,"mem_mb":null,"disk_size":null},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"prefect-snowflake","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"broken","install_time_s":29.3,"import_time_s":null,"mem_mb":null,"disk_size":"245M"}]}}