Skip to main content

gomssql-python

This library binds go-mssqldb for use in Python3 using gopy .

Versions

All versions 1.0.0 and up support Python 3 only! If you need Python 2 support, check out the following:

Concept

In the early days gopy was fairly limited in it's ability to track object allocation across the border of Go and Python.

As a result, our implementation is fairly naive- we only pass primitive types from Go to Python (nothing that comes by reference).

Session are managed entirely on the Go side and identified with an integer- here are a few function signatures to demonstrate:

  • NewRPCSession(dataSourceName string) uint64
  • RPCConnect(sessionID uint64) error
  • RPCQuery(sessionID uint64, query string) (uint64, error)
  • RPCFetchAll(sessionID, rowsID uint64) (string, error)
  • RPCExecute(sessionID uint64, query string) (uint64, error)
  • RPCGetRowsAffected(sessionID, resultID uint64) (int64, error)
  • RPCClose(sessionID uint64) error

The functions that return complex data do so in a special JSON-based format- at this point gopy does it's magic and those functions are made available to Python.

We then have RPCSession abstraction on the Python side that pulls things together in a class for convenience (saving you need the to keep track of the identifiers and handling deserialisation).

Weird gotchas

We're building for Python3 and we use a python-config script for Python3 however we're using a python.pc file from Python2.

I dunno why this has to be this way, but it's the only way I can get the C Python API GIL lock/unlock calls to be available to Go (C.PyEval_SaveThread() and C.PyEval_RestoreThread(tState)).

So if you're wondering why Python2 still comes into it here and there- that's why. Doesn't seem to cause any problems.

Prerequisites

  • MacOS
  • CPython3.8+
  • virtualenv
    • pip install virtualenv
  • pkgconfig
    • brew install pkg-config
  • Docker

Install (from PyPI)

python -m pip install gomssql-python

Setup

virtualenv -p $(which python3) venv
source venv/bin/activate
./fix_venv.sh
pip install -r requirements-dev.txt

Build

source venv/bin/activate
./native_build.sh

If you're deep in the grind and want to iterate faster, you can invoke:

./native_build.sh fast

This skips the setup (assuming you've already done that).

Metadata

Release files for gomssql-python 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gomssql-python 1.0.0
File Size Uploaded
gomssql-python-1.0.0.tar.gz 11.4 kB Details

Release files / gomssql-python-1.0.0.tar.gz

Download URL gomssql-python-1.0.0.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c7affb913b0882a325c4ae55795194de8a016a0a310028eead23c40a60982b7a
BLAKE2b-256 checksum
How to use checksums
36903517b0c7a2041065621457b8cc9c244b9a717ea87966d935bdbfb25c827a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.12

Release history Release notifications | RSS feed

This release

1.0.0 This release

1 release file

0.91

1 release file

0.9

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page