Skip to content

Microsoft SQL Server🔗

Supported drivers:

dbapi default driver connection class
pymssql 👍 mssql+pymssql pymssql._pymssql.Connection

pymssql🔗

pymssql is the default dbapi driver for Microsoft SQL Server in pydapper.

Installation🔗

pip install pydapper[pymssql]
poetry add pydapper -E pymssql

DSN format🔗

dsn = f"mssql+pymssql://{user}:{password}@{host}:{port}/{dbname}"
dsn = "mssql+pymssql://myuser:mypassword:1433@localhost/mydb"
dsn = "mssql://myuser:mypassword:1433@localhost/mydb"

Example - connect🔗

Please see the pymssql docs for a full description of the context manager behavior.

import pydapper

with pydapper.connect("mssql://sa:pydapper!PYDAPPER@localhost:1434/pydapper") as commands:
    print(type(commands))
    # <class 'pydapper.mssql.pymssql.PymssqlCommands'>

    print(type(commands.connection))
    # <class 'pymssql._pymssql.Connection'>

    with commands.cursor() as raw_cursor:
        print(type(raw_cursor))
        # <class 'pymssql._pymssql.Cursor'>

Example - using🔗

Use pydapper with a custom connection pool.

from collections import deque

import pymssql

import pydapper


class SimplePool:
    """pymssql does not provide a pool interface, this is a simple example that should never be used in production"""

    def __init__(self, **connect_kwargs):
        self._connect_kwargs = connect_kwargs
        self._connections = deque()

    def getconn(self):
        if len(self._connections) == 0:
            return pymssql.connect(**self._connect_kwargs)
        return self._connections.pop()

    def putconn(self, conn):
        self._connections.append(conn)

    def __del__(self):
        for conn in self._connections:
            conn.close()


my_pool = SimplePool(server="localhost", port=1434, user="sa", password="pydapper!PYDAPPER", database="pydapper")

commands = pydapper.using(my_pool.getconn())
print(type(commands))
# <class 'pydapper.mssql.pymssql.PymssqlCommands'>

print(type(commands.connection))
# <class 'pymssql._pymssql.Connection'>

my_pool.putconn(commands.connection)