Skip to main content

A high-performance async Python library for Microsoft SQL Server built on Rust for heavy workloads and low latency.

Project description

FastMSSQL ⚡

FastMSSQL is an async Python library for Microsoft SQL Server (MSSQL), built in Rust. Unlike standard libaries, it uses a native SQL Server client—no ODBC required—simplifying installation on Windows, macOS, and Linux. Great for data ingestion, bulk inserts, and large-scale query workloads.

Python Versions

License

Unit Tests

Latest Release

Platform

Rust Backend

Features

  • High performance: optimized for very high RPS and low overhead
  • Rust core: memory‑safe and reliable, tuned Tokio runtime
  • No ODBC: native SQL Server client, no external drivers needed
  • Azure authentication: Service Principal, Managed Identity, and access token support (BETA)
  • Connection pooling: bb8‑based, smart defaults (default max_size=20, min_idle=2)
  • Async first: clean async/await API with async with context managers
  • Strong typing: fast conversions for common SQL Server types
  • Thread‑safe: safe to use in concurrent apps
  • Cross‑platform: Windows, macOS, Linux
  • Batch operations: high-performance bulk inserts and batch query execution
  • Apache Arrow support

Installation

From PyPI (recommended)

pip install fastmssql

Optional dependencies

Apache Arrow support (for to_arrow() method):

pip install fastmssql[arrow]

Prerequisites

  • Python 3.11 to 3.14
  • Microsoft SQL Server (any recent version)

Quick start

Basic async usage

import asyncio
from fastmssql import Connection

async def main():
    conn_str = "Server=localhost;Database=master;User Id=myuser;Password=mypass"
    async with Connection(conn_str) as conn:
        # SELECT: use query() -> rows()
        result = await conn.query("SELECT @@VERSION as version")
        for row in result.rows():
            print(row['version'])

        # Pool statistics (tuple: connected, connections, idle, max_size, min_idle)
        connected, connections, idle, max_size, min_idle = await conn.pool_stats()
        print(f"Pool: connected={connected}, size={connections}/{max_size}, idle={idle}, min_idle={min_idle}")

asyncio.run(main())

Explicit Connection Management

When not utilizing Python's context manager (async with), FastMssql uses lazy connection initialization: if you call query() or execute() on a new Connection, the underlying pool is created if not already present.

For more control, you can explicitly connect and disconnect:

import asyncio
from fastmssql import Connection

async def main():
    conn_str = "Server=localhost;Database=master;User Id=myuser;Password=mypass"
    conn = Connection(conn_str)

    # Explicitly connect
    await conn.connect()
    assert await conn.is_connected()

    # Run queries
    result = await conn.query("SELECT 42 as answer")
    print(result.rows()[0]["answer"])  # -> 42

    # Explicitly disconnect
    await conn.disconnect()
    assert not await conn.is_connected()

asyncio.run(main())

Usage

Connection options

You can connect either with a connection string or individual parameters.

  1. Connection string
import asyncio
from fastmssql import Connection

async def main():
    conn_str = "Server=localhost;Database=master;User Id=myuser;Password=mypass"
    async with Connection(connection_string=conn_str) as conn:
        rows = (await conn.query("SELECT DB_NAME() as db")).rows()
        print(rows[0]['db'])

asyncio.run(main())
  1. Individual parameters
import asyncio
from fastmssql import Connection

async def main():
    async with Connection(
        server="localhost",
        database="master",
        username="myuser",
        password="mypassword"
    ) as conn:
        rows = (await conn.query("SELECT SUSER_SID() as sid")).rows()
        print(rows[0]['sid'])

asyncio.run(main())

Note: Windows authentication (Trusted Connection) is currently not supported. Use SQL authentication (username/password).

Azure Authentication (BETA)

🧪 This is a beta feature. Azure authentication functionality is experimental and may change in future versions.

FastMSSSQL supports Azure Active Directory (AAD) authentication for Azure SQL Database and Azure SQL Managed Instance. You can authenticate using Service Principals, Managed Identity, or access tokens.

Service Principal Authentication

import asyncio
from fastmssql import Connection, AzureCredential

async def main():
    # Create Azure credential using Service Principal
    azure_cred = AzureCredential.service_principal(
        client_id="your-client-id",
        client_secret="your-client-secret", 
        tenant_id="your-tenant-id"
    )
    
    async with Connection(
        server="yourserver.database.windows.net",
        database="yourdatabase",
        azure_credential=azure_cred
    ) as conn:
        result = await conn.query("SELECT GETDATE() as current_time")
        for row in result.rows():
            print(f"Connected! Current time: {row['current_time']}")

asyncio.run(main())

Managed Identity Authentication

For Azure resources (VMs, Function Apps, App Service, etc.):

import asyncio
from fastmssql import Connection, AzureCredential

async def main():
    # System-assigned managed identity
    azure_cred = AzureCredential.managed_identity()
    
    # Or user-assigned managed identity
    # azure_cred = AzureCredential.managed_identity(client_id="user-assigned-identity-client-id")
    
    async with Connection(
        server="yourserver.database.windows.net",
        database="yourdatabase",
        azure_credential=azure_cred
    ) as conn:
        result = await conn.query("SELECT USER_NAME() as user_name")
        for row in result.rows():
            print(f"Connected as: {row['user_name']}")

asyncio.run(main())

Access Token Authentication

If you already have an access token from another Azure service:

import asyncio
from fastmssql import Connection, AzureCredential

async def main():
    # Use a pre-obtained access token
    access_token = "your-access-token"
    azure_cred = AzureCredential.access_token(access_token)
    
    async with Connection(
        server="yourserver.database.windows.net",
        database="yourdatabase",
        azure_credential=azure_cred
    ) as conn:
        result = await conn.query("SELECT 1 as test")
        print("Connected with access token!")

asyncio.run(main())

Default Azure Credential

Uses the Azure credential chain (environment variables → managed identity → Azure CLI → Azure PowerShell):

import asyncio
from fastmssql import Connection, AzureCredential

async def main():
    # Use default Azure credential chain
    azure_cred = AzureCredential.default()
    
    async with Connection(
        server="yourserver.database.windows.net",
        database="yourdatabase",
        azure_credential=azure_cred
    ) as conn:
        result = await conn.query("SELECT 1 as test")
        print("Connected with default credentials!")

asyncio.run(main())

Prerequisites for Azure Authentication:

  • Azure SQL Database or Azure SQL Managed Instance
  • Service Principal with appropriate SQL Database permissions
  • For Managed Identity: Azure resource with managed identity enabled
  • For Default credential: Azure CLI installed and authenticated (az login)

See examples/azure_auth_example.py for comprehensive usage examples.

Working with data

import asyncio
from fastmssql import Connection

async def main():
    async with Connection("Server=.;Database=MyDB;User Id=sa;Password=StrongPwd;") as conn:
        # SELECT (returns rows)
        users = (await conn.query(
            "SELECT id, name, email FROM users WHERE active = 1"
        )).rows()
        for u in users:
            print(f"User {u['id']}: {u['name']} ({u['email']})")

        # INSERT / UPDATE / DELETE (returns affected row count)
        inserted = await conn.execute(
            "INSERT INTO users (name, email) VALUES (@P1, @P2)",
            ["Jane", "jane@example.com"],
        )
        print(f"Inserted {inserted} row(s)")

        updated = await conn.execute(
            "UPDATE users SET last_login = GETDATE() WHERE id = @P1",
            [123],
        )
        print(f"Updated {updated} row(s)")

asyncio.run(main())

Parameters use positional placeholders: @P1, @P2, ... Provide values as a list in the same order.

Batch operations

For high-throughput scenarios, use batch methods to reduce network round-trips:

import asyncio
from fastmssql import Connection

async def main_fetching():
    # Replace with your actual connection string
    async with Connection("Server=.;Database=MyDB;User Id=sa;Password=StrongPwd;") as conn:

        # --- 1. Prepare Data for Demonstration ---
        columns = ["name", "email", "age"]
        data_rows = [
            ["Alice Johnson", "alice@example.com", 28],
            ["Bob Smith", "bob@example.com", 32],
            ["Carol Davis", "carol@example.com", 25],
            ["David Lee", "david@example.com", 35],
            ["Eva Green", "eva@example.com", 29]
        ]
        await conn.bulk_insert("users", columns, data_rows)

        # --- 2. Execute Query and Retrieve the Result Object ---
        print("\n--- Result Object Fetching (fetchone, fetchmany, fetchall) ---")

        # The Result object is returned after the awaitable query executes.
        result = await conn.query("SELECT name, age FROM users ORDER BY age DESC")

        # fetchone(): Retrieves the next single row synchronously.
        oldest_user = result.fetchone()
        if oldest_user:
            print(f"1. fetchone: Oldest user is {oldest_user['name']} (Age: {oldest_user['age']})")

        # fetchmany(2): Retrieves the next set of rows synchronously.
        next_two_users = result.fetchmany(2)
        print(f"2. fetchmany: Retrieved {len(next_two_users)} users: {[r['name'] for r in next_two_users]}.")

        # fetchall(): Retrieves all remaining rows synchronously.
        remaining_users = result.fetchall()
        print(f"3. fetchall: Retrieved all {len(remaining_users)} remaining users: {[r['name'] for r in remaining_users]}.")

        # Exhaustion Check: Subsequent calls return None/[]
        print(f"4. Exhaustion Check (fetchone): {result.fetchone()}")
        print(f"5. Exhaustion Check (fetchmany): {result.fetchmany(1)}")

        # --- 3. Batch Commands for multiple operations ---
        print("\n--- Batch Commands (execute_batch) ---")
        commands = [
            ("UPDATE users SET last_login = GETDATE() WHERE name = @P1", ["Alice Johnson"]),
            ("INSERT INTO user_logs (action, user_name) VALUES (@P1, @P2)", ["login", "Alice Johnson"])
        ]

        affected_counts = await conn.execute_batch(commands)
        print(f"Updated {affected_counts[0]} users, inserted {affected_counts[1]} logs")

asyncio.run(main_fetching())

Apache Arrow

Convert query results to Apache Arrow tables for efficient bulk data processing and interoperability with data science tools:

import asyncio
from fastmssql import Connection

async def main():
    conn_str = "Server=localhost;Database=master;User Id=myuser;Password=mypass"
    async with Connection(conn_str) as conn:
        # Execute query and convert to Arrow
        result = await conn.query("SELECT id, name, salary FROM employees")
        arrow_table = result.to_arrow()
        
        # Arrow Table enables:
        # - Efficient columnar storage and compute
        # - Integration with Pandas, DuckDB, Polars
        # - Parquet/ORC serialization
        df = arrow_table.to_pandas()  # Convert to pandas DataFrame
        print(df)
        
        # Write to Parquet for long-term storage
        import pyarrow.parquet as pq
        pq.write_table(arrow_table, "employees.parquet")
        
        # Or use with DuckDB for analytical queries
        import duckdb
        result = duckdb.from_arrow(arrow_table).filter("salary > 50000").execute()
        print(result.fetchall())

Requirements: Install PyArrow with pip install pyarrow

Note: Results are converted eagerly into Arrow arrays. For very large datasets, consider chunking queries or using iteration-based processing instead.

Connection pooling

Tune the pool to fit your workload. Constructor signature:

from fastmssql import PoolConfig

config = PoolConfig(
    max_size=20,              # max connections in pool
    min_idle=5,               # keep at least this many idle
    max_lifetime_secs=3600,   # recycle connections after 1h
    idle_timeout_secs=600,    # close idle connections after 10m
    connection_timeout_secs=30
)

Presets:

one   = PoolConfig.one()                     # max_size=1,  min_idle=1  (single connection)
low   = PoolConfig.low_resource()            # max_size=3,  min_idle=1  (constrained environments)
dev   = PoolConfig.development()             # max_size=5,  min_idle=1  (local development)
high  = PoolConfig.high_throughput()         # max_size=25, min_idle=8  (high-throughput workloads)
maxp  = PoolConfig.performance()             # max_size=30, min_idle=10 (maximum performance)

# ✨ RECOMMENDED: Adaptive pool sizing based on your concurrency
adapt = PoolConfig.adaptive(20)              # Dynamically sized for 20 concurrent workers
                                             # Formula: max_size = ceil(workers * 1.2) + 5

⚡ Performance Tip: Use PoolConfig.adaptive(n) where n is your expected concurrent workers/tasks. This prevents connection pool lock contention that can degrade performance with oversized pools.

Apply to a connection:

# Recommended: adaptive sizing
async with Connection(conn_str, pool_config=PoolConfig.adaptive(20)) as conn:
    rows = (await conn.query("SELECT 1 AS ok")).rows()

# Or use presets
async with Connection(conn_str, pool_config=PoolConfig.high_throughput()) as conn:
    rows = (await conn.query("SELECT 1 AS ok")).rows()

Default pool (if omitted): max_size=15, min_idle=3.

Transactions

For workloads that require SQL Server transactions with guaranteed connection isolation, use the Transaction class. Unlike Connection (which uses connection pooling), Transaction maintains a dedicated, non-pooled connection for the lifetime of the transaction. This ensures all operations within the transaction run on the same connection, preventing connection-switching issues.

Automatic transaction control (recommended)

Use the context manager for automatic BEGIN, COMMIT, and ROLLBACK:

import asyncio
from fastmssql import Transaction

async def main():
    conn_str = "Server=localhost;Database=master;User Id=myuser;Password=mypass"
    
    async with Transaction(conn_str) as transaction:
        # Automatically calls BEGIN
        await transaction.execute(
            "INSERT INTO orders (customer_id, total) VALUES (@P1, @P2)",
            [123, 99.99]
        )
        await transaction.execute(
            "INSERT INTO order_items (order_id, product_id, qty) VALUES (@P1, @P2, @P3)",
            [1, 456, 2]
        )
        # Automatically calls COMMIT on successful exit
        # or ROLLBACK if an exception occurs

asyncio.run(main())

Manual transaction control

For more control, explicitly call begin(), commit(), and rollback():

import asyncio
from fastmssql import Transaction, SqlError

async def main():
    conn_str = "Server=localhost;Database=master;User Id=myuser;Password=mypass"
    transaction = Transaction(conn_str)
    
    try:
        await transaction.begin()
        
        result = await transaction.query("SELECT @@VERSION as version")
        print(result.rows()[0]['version'])
        
        await transaction.execute("UPDATE accounts SET balance = balance - @P1 WHERE id = @P2", [50, 1])
        await transaction.execute("UPDATE accounts SET balance = balance + @P1 WHERE id = @P2", [50, 2])
        
        await transaction.commit()
    except SqlError as e:
        await transaction.rollback()
        raise
    finally:
        await transaction.close()

asyncio.run(main())

Key differences: Transaction vs Connection

Feature Transaction Connection
Connection Dedicated, non-pooled Pooled (bb8)
Use case SQL transactions, ACID operations General queries, connection reuse
Isolation Single connection per instance Connection may vary per operation
Pooling None (direct TcpStream) Configurable pool settings
Lifecycle Held until .close() or context exit Released to pool after each operation

Choose Transaction when you need guaranteed transaction isolation; use Connection for typical queries and high-concurrency workloads with connection pooling.

SSL/TLS

For Required and LoginOnly encryption, you must specify how to validate the server certificate:

Option 1: Trust Server Certificate (development/self-signed certs):

from fastmssql import SslConfig, EncryptionLevel, Connection

ssl = SslConfig(
    encryption_level=EncryptionLevel.Required,
    trust_server_certificate=True
)

async with Connection(conn_str, ssl_config=ssl) as conn:
    ...

Option 2: Custom CA Certificate (production):

from fastmssql import SslConfig, EncryptionLevel, Connection

ssl = SslConfig(
    encryption_level=EncryptionLevel.Required,
    ca_certificate_path="/path/to/ca-cert.pem"
)

async with Connection(conn_str, ssl_config=ssl) as conn:
    ...

Note: trust_server_certificate and ca_certificate_path are mutually exclusive.

Helpers:

  • SslConfig.development() – encrypt, trust all (dev only)
  • SslConfig.with_ca_certificate(path) – use custom CA
  • SslConfig.login_only() / SslConfig.disabled() – legacy modes
  • SslConfig.disabled() – no encryption (not recommended)

Performance tips

1. Use adaptive pool sizing for optimal concurrency

Match your pool size to actual concurrency to avoid connection pool lock contention:

import asyncio
from fastmssql import Connection, PoolConfig

async def worker(conn_str, cfg):
    async with Connection(conn_str, pool_config=cfg) as conn:
        for _ in range(1000):
            result = await conn.query("SELECT 1 as v")
            # ✅ Good: Lazy iteration (minimal GIL hold per row)
            for row in result:
                process(row)

async def main():
    conn_str = "Server=.;Database=master;User Id=sa;Password=StrongPwd;"
    num_workers = 32
    
    # ✅ Adaptive sizing prevents pool contention
    cfg = PoolConfig.adaptive(num_workers)  # → max_size=43 for 32 workers
    
    await asyncio.gather(*[worker(conn_str, cfg) for _ in range(num_workers)])

asyncio.run(main())

2. Use iteration for large result sets (not .rows())

result = await conn.query("SELECT * FROM large_table")

# ✅ Good: Lazy conversion, one row at a time (minimal GIL contention)
for row in result:
    process(row)

# ❌ Bad: Eager conversion, all rows at once (GIL bottleneck)
all_rows = result.rows()  # or result.fetchall()

Lazy iteration distributes GIL acquisition across rows, dramatically improving performance with multiple Python workers.

Examples & benchmarks

  • Examples: examples/comprehensive_example.py
  • Benchmarks: benchmarks/

Troubleshooting

  • Import/build: ensure Rust toolchain and maturin are installed if building from source
  • Connection: verify connection string; Windows auth not supported
  • Timeouts: increase pool size or tune connection_timeout_secs
  • Parameters: use @P1, @P2, ... and pass a list of values

Contributing

Contributions are welcome. Please open an issue or PR.

License

FastMSSQL is licensed under MIT:

See the LICENSE file for details.

Third‑party attributions

Built on excellent open source projects: Tiberius, PyO3, pyo3‑asyncio, bb8, tokio, serde, pytest, maturin, and more. See licenses/NOTICE.txt for the full list. The full texts of Apache‑2.0 and MIT are in licenses/.

Acknowledgments

Thanks to the maintainers of Tiberius, bb8, PyO3, Tokio, pytest, maturin, and the broader open source community.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastmssql-0.7.2.tar.gz (290.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fastmssql-0.7.2-cp314-cp314t-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.14tWindows x86-64

fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

fastmssql-0.7.2-cp314-cp314t-manylinux_2_34_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ ARM64

fastmssql-0.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

fastmssql-0.7.2-cp314-cp314t-macosx_10_15_universal2.whl (5.9 MB view details)

Uploaded CPython 3.14tmacOS 10.15+ universal2 (ARM64, x86-64)

fastmssql-0.7.2-cp313-cp313t-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.13tWindows x86-64

fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ x86-64

fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.13tmusllinux: musl 1.2+ ARM64

fastmssql-0.7.2-cp313-cp313t-manylinux_2_34_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.34+ ARM64

fastmssql-0.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.28+ x86-64

fastmssql-0.7.2-cp313-cp313t-macosx_10_15_universal2.whl (5.9 MB view details)

Uploaded CPython 3.13tmacOS 10.15+ universal2 (ARM64, x86-64)

fastmssql-0.7.2-cp311-abi3-win_amd64.whl (2.7 MB view details)

Uploaded CPython 3.11+Windows x86-64

fastmssql-0.7.2-cp311-abi3-musllinux_1_2_x86_64.whl (3.3 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

fastmssql-0.7.2-cp311-abi3-musllinux_1_2_aarch64.whl (3.0 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

fastmssql-0.7.2-cp311-abi3-manylinux_2_34_aarch64.whl (2.9 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ ARM64

fastmssql-0.7.2-cp311-abi3-manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ x86-64

fastmssql-0.7.2-cp311-abi3-macosx_10_15_universal2.whl (5.9 MB view details)

Uploaded CPython 3.11+macOS 10.15+ universal2 (ARM64, x86-64)

File details

Details for the file fastmssql-0.7.2.tar.gz.

File metadata

  • Download URL: fastmssql-0.7.2.tar.gz
  • Upload date:
  • Size: 290.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2.tar.gz
Algorithm Hash digest
SHA256 c69de89b7c6b135b08ef3e6aec6e1d7347dfc0bddedbd5eab6b9b292e82a8f8a
MD5 cde5ca78ea24cbd08315e2f7f86e1189
BLAKE2b-256 e9f990230ecaa72d52277e149f35bf7c1354d570f472f072151e5c731fabca1d

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 dcb7e88acd98c8b116c7f1daea23f3140a33a7ae2624a12150a9046aab4dcfc4
MD5 4dad263ed5e4a5b7a87c7000b50b96a3
BLAKE2b-256 33b71608eac664d94a06588bff515deb41f696f6e19e9abbdf8a57edb367317f

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9dd40ddbefb01b0a7ab94acf46609fd843eaf8b7dd901b9719a5c0e243bddcaa
MD5 09077ebaea1e32b8bf96f27155996c18
BLAKE2b-256 e0f82ef033b8b87b506f34ec98566645d21c67662c9fd7b7050da375c8d28a41

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 57de6ce0b3070e9af8e34dcffa749eee4262c34961970bc911ae411f2885c260
MD5 7348140ee6fd00271ab3e210befb959a
BLAKE2b-256 f5f3143c007684c1734c908a471845ca6675049535ce95aeb494c4260a45314c

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp314-cp314t-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp314-cp314t-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp314-cp314t-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 27c82d34deef7bc9233be13f3a9ce988d854a51a57cd021243af7f327f285b1b
MD5 ea3dac8c749d2087e86d2b72cfbc4252
BLAKE2b-256 c145016d3eeb0539724c90843cfbd9ac1327a6e2c254354099d6a8f4d91934cb

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 02d1eb991f2642766f52303cb0482df7166019d6091ada37df1780e6b635fbc7
MD5 8091bcfc5d231f67d49518c584ec40ac
BLAKE2b-256 9eece300e0053eb4c5a9ebc73d68b438212ed5f8496d5fc88938d0e192433f1d

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp314-cp314t-macosx_10_15_universal2.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp314-cp314t-macosx_10_15_universal2.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: CPython 3.14t, macOS 10.15+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp314-cp314t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 e3ca33847913e566b4f8e46b46412243787fde7372fb6f23394c10ce24a4ddd9
MD5 19df4bbce410bb52335e90f445512bf3
BLAKE2b-256 be609ff43cd07bca7d975351d438529583a03e5f07a6bf1b59f8eea7bb8feea6

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp313-cp313t-win_amd64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp313-cp313t-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.13t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp313-cp313t-win_amd64.whl
Algorithm Hash digest
SHA256 0758b5b160cff3655c178b175d055d304262adef8ced5e2e603583d185a0ca65
MD5 60b0ab8a67036d26e1ce5a72f94d378c
BLAKE2b-256 eb2efea236eebd7974f28b872fc5604fb31d18bcd9c9f50503f7a57e8472fafb

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 73e04482181e8e87cead4d6ecd14ea4f84edae2536f85d895e57d32200cc2e57
MD5 de867819562e652613755c1b9bb53bb7
BLAKE2b-256 c840e084daac1aa7cbec45888b0c635c8b18f28e3d6f7e62c0f655256d92a0da

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.13t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp313-cp313t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 14e1aab3719b1488e50ce21a4421ed4905d6246aba9438452c0673a1ce4dc8ad
MD5 31ef2db5a1bc9d01092e459319fe9d3f
BLAKE2b-256 307b1f29d6a87c8894268912a1451a07b400bcc86b6542d2dc10c51bb24e3663

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp313-cp313t-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp313-cp313t-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp313-cp313t-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a4b5d569621226fc1aafac3cbfbad2b4550bfadb3933b070db9ccf545cf6b529
MD5 2d899aefad8c02f808166cd9aa5ff69b
BLAKE2b-256 17f75c62677f0051af639357c86f33cbf34a46079fde7c8a997f6e48b9847d07

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.13t, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp313-cp313t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 68828c829916dc0d1ab146926288426bfde3bd24f7f3864b27e1ca0209ee9f16
MD5 7d8a34e61a0feace6ef1efeb1f3814e7
BLAKE2b-256 79b2023d58492959cf57d9e06c28e4bd3e0850756c3d224fb1b2bd8cac2654a1

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp313-cp313t-macosx_10_15_universal2.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp313-cp313t-macosx_10_15_universal2.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: CPython 3.13t, macOS 10.15+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp313-cp313t-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 6964ca08d768619800f6ed229c2ed9a4e45f06125bec405c070b743e34e194ed
MD5 f6013ea404b1a536f0a5a64828c47429
BLAKE2b-256 6527dc75097bed983b548df2c4653b595f9a6c64a1494e8bc4b86f874f0a95bd

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 2.7 MB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1487002f9401786f88cbda4a3a1fb0c35296e46f25611d1ebe87950c80c51841
MD5 e40eb0be46d7ebf32e997e73b3793fb4
BLAKE2b-256 0e40b3b3fdd8bc52e5d8630180613580b9f4186826f4c72998c577c99d0122f1

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp311-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 3.3 MB
  • Tags: CPython 3.11+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d9236f38618f29022342e8e5761464e338a48df11bc95537d4af18fc7d4b27de
MD5 093dabfdc24d0e034b4e45ef9db9e3c2
BLAKE2b-256 eaa31120514aae9fc0565156c75b99820fbd39d06b34c8b7d283ebfed01099f7

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp311-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 3.0 MB
  • Tags: CPython 3.11+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 114b3675503d2af53066c05af0c5adbcbdae8ad4801aef6c85513f832c63868c
MD5 a4b1a362fec60e10a24ba20c3c991ae1
BLAKE2b-256 e198b99ef723635581c7ba797db2fe7721454d728ac253eb2ba28d9024e39c3d

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp311-abi3-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp311-abi3-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: CPython 3.11+, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp311-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 a52603c61a9549b71d236f69316f0171d46ef4c121583dff538ea617e4342f46
MD5 a032c0123cfb7e03d9b09c2f69c9ef78
BLAKE2b-256 244fefa9823f824476993fa455852e152304ad156099d19cd9ea08a84256163c

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp311-abi3-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 3.2 MB
  • Tags: CPython 3.11+, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 aa69dc0515851a56be3d2cfab4af4b69d64c921c565b69b29ce3c3ba5a84ae7d
MD5 85a7e8204b237a73923938dce5cf12da
BLAKE2b-256 5a0fe03c94e3f0332d7f778a03311f7e4ccf80c882826e7d77ecca700935c01d

See more details on using hashes here.

File details

Details for the file fastmssql-0.7.2-cp311-abi3-macosx_10_15_universal2.whl.

File metadata

  • Download URL: fastmssql-0.7.2-cp311-abi3-macosx_10_15_universal2.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: CPython 3.11+, macOS 10.15+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fastmssql-0.7.2-cp311-abi3-macosx_10_15_universal2.whl
Algorithm Hash digest
SHA256 7708251387ad9eb9d02d139938daa5d93378e1470167b00bd71364744cd1c0fb
MD5 373f8b9d5342d83d2b7d4a8baee02d85
BLAKE2b-256 3b8dea18845ccb21fe8383bc111687e8420d14167ce7ad40e1b67aef534ab6e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page