这个项目能做什么

fakesnow 是一个用于在本地运行、模拟和测试假 Snowflake 数据库的工具。它提供两种方式:在进程内修补 Snowflake Connector for Python,或者运行一个独立的 HTTP 服务器,供任何语言的连接器使用。 进程内修补(Python):使用 pip 安装,然后通过 `fakesnow script.py` 运行脚本,或通过 `fakesnow -m pytest` 运行 pytest 等模块。也可以在代码中使用 `fakesnow.patch()` 作为上下文管理器。对 `snowflake.connector.connect` 和 `snowflake.connector.pandas_tools.write_pandas` 的标准导入会自动修补;使用 `from ... import` 语法的模块必须显式指定名称,例如 `fakesnow.patch("mymodule.write_pandas")`。修补仅适用于当前进程,因此子进程和非 Python 客户端需要使用服务器。数据库默认在内存中,可以通过传入 `db_path` 进行持久化。 服务器模式:运行 `fakesnow -s`(或通过 uvx/docker,容器监听端口 64616)启动 HTTP 服务器。也可以在 Python 程序中使用 `fakesnow.server()` 启动,它会返回连接参数,并在退出时停止服务器。端口和数据库持久化/隔离可通过会话参数配置,例如 `FAKESNOW_DB_PATH`(包括 `:isolated:` 值)。任何用户名/密码/账户组合都会被接受;README 记录了从 Snowflake CLI(config.toml 中设置 `protocol = http`)、通过 snowflake-jdbc 从 Java 连接(附有关于在 URL 中保留 `account` 以及为 Arrow 添加 JVM `--add-opens` 的说明),以及通过 Testcontainers 连接的方法。 通过 `pytest_plugins = "fakesnow.fixtures"` 提供 pytest fixture,包括一个会话级 fixture 和一个提供连接参数的 `fakesnow_server` fixture。 覆盖范围:完全支持的项目包括标准 SQL 操作和游标、information schema 查询、多个数据库、参数绑定、表注释、包括 write_pandas 在内的 pandas 集成、通过 get_result_batches 获取结果批次,以及面向非 Python 连接器的 HTTP 服务器。部分支持:日期函数、正则表达式函数、半结构化数据操作、标签、用户管理、stage 和 PUT、命名文件格式,以及从 S3 源和 stage 执行 COPY INTO。尚未实现:访问控制和存储过程。README 指出一些注意事项:除非完整指定 ORDER BY,否则行顺序是不确定的;所支持的 SQL 方言比真实 Snowflake 更宽松,因此某些查询可能在本地可以运行,但在真实实例上无法运行。COPY INTO 可以使用标准 AWS 凭证链,或使用 duckdb 的 CREATE SECRET 语句来提供替代的 S3 凭证。