Install & Compatibility
Where this runs
tested against v7.5.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
py 3.13
✕ build_error
✕ build_error
227MB installed
● package 227MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
SnowflakeExtractor
✓ from databuilder.extractor.snowflake_metadata_extractor import SnowflakeMetadataExtractor
✗ from databuilder.extractor.snowflake_extractor import SnowflakeExtractor
Correct class name is SnowflakeMetadataExtractor, not SnowflakeExtractor. Common mistake: many users try to import SnowflakeExtractor which does not exist.
Neo4jCsvLoader
✓ from databuilder.loader.file_system_neo4j_csv_loader import FsNeo4jCsvLoader
✗ from databuilder.loader.neo4j_csv_loader import Neo4jCsvLoader
The correct class is FsNeo4jCsvLoader. The module is file_system_neo4j_csv_loader.
GenericExtractor
✓ from databuilder.extractor.generic_extractor import GenericExtractor
Minimal job that extracts metadata from Snowflake and loads it into Neo4j via CSV. Ensure SNOWFLAKE_* and NEO4J_* environment variables are set.
import logging
import os
from databuilder.job.job import DefaultJob
from databuilder.task.task import DefaultTask
from databuilder.extractor.snowflake_metadata_extractor import SnowflakeMetadataExtractor
from databuilder.loader.file_system_neo4j_csv_loader import FsNeo4jCsvLoader
from databuilder.publisher.neo4j_csv_publisher import Neo4jCsvPublisher
from databuilder.transformer.base_transformer import NoopTransformer
logging.basicConfig(level=logging.INFO)
# Configuration for Snowflake extractor
extractor = SnowflakeMetadataExtractor()
extractor.init(
{
SnowflakeMetadataExtractor.ACCOUNT_KEY: os.environ.get('SNOWFLAKE_ACCOUNT', ''),
SnowflakeMetadataExtractor.DATABASE_KEY: os.environ.get('SNOWFLAKE_DATABASE', ''),
SnowflakeMetadataExtractor.SCHEMA_KEY: os.environ.get('SNOWFLAKE_SCHEMA', ''),
SnowflakeMetadataExtractor.USER_KEY: os.environ.get('SNOWFLAKE_USER', ''),
SnowflakeMetadataExtractor.PASSWORD_KEY: os.environ.get('SNOWFLAKE_PASSWORD', ''),
SnowflakeMetadataExtractor.WAREHOUSE_KEY: os.environ.get('SNOWFLAVE_WAREHOUSE', ''),
}
)
loader = FsNeo4jCsvLoader()
loader.init({})
publisher = Neo4jCsvPublisher()
publisher.init(
{
Neo4jCsvPublisher.NEO4J_END_POINT_KEY: os.environ.get('NEO4J_ENDPOINT', 'bolt://localhost:7687'),
Neo4jCsvPublisher.NEO4J_USER: os.environ.get('NEO4J_USER', 'neo4j'),
Neo4jCsvPublisher.NEO4J_PASSWORD: os.environ.get('NEO4J_PASSWORD', 'test'),
Neo4jCsvPublisher.NEO4J_MAX_CONN_LIFE_TIME_SEC: 1000,
Neo4jCsvPublisher.JOB_PUBLISHER_TASK: 'test',
}
)
task = DefaultTask(
extractor=extractor,
loader=loader,
transformer=NoopTransformer(),
)
job = DefaultJob(
task=task,
publisher=publisher,
)
job.launch()
Errors
Common errors & fixes
ModuleNotFoundError: No module named 'databuilder.extractor.snowflake_extractor'
Old import path; renamed in 7.0.0.
fixUse 'from databuilder.extractor.snowflake_metadata_extractor import SnowflakeMetadataExtractor'.
TypeError: __init__() got an unexpected keyword argument 'neo4j_endpoint'
Neo4j publisher config keys changed; they no longer accept direct keyword args.
fixUse publisher.init() with a dictionary of config keys, e.g., publisher.init({Neo4jCsvPublisher.NEO4J_END_POINT_KEY: 'bolt://...'}). Upgrade
Version history
7.5.1latest on PyPI · released Aug 14, 2024
Audit
Dependencies
No dependency data recorded yet.