Skip to main content

Db handler wrapper for interacting with a SQL database using SQLAlchemy.

Project description

tSQLoader

tSQLoader is a Python-based utility designed to simplify interactions with MSSQL databases using SQLAlchemy. This tool empowers users to manage and manipulate database records without requiring direct access to the production database or advanced SQL knowledge. It offers features such as seamless database connections, inserting or updating records using Pandas DataFrames, handling primary key conflicts gracefully, and verifying table existence. tSQLoader is particularly valuable for managing data pipelines, integrating data from various sources, and enabling a smoother, more accessible database interaction experience.

Features

  • Establishes a connection to SQL databases using SQLAlchemy.
  • Writes Pandas DataFrames to SQL tables with support for primary key conflict resolution.
  • Deletes conflicting rows in the database before inserting new data.
  • Checks if a specified SQL table exists.

Requirements

To use DatabaseHandler, ensure you have the following installed:

  • Python 3.7 or higher
  • SQLAlchemy
  • Pandas
  • A compatible SQL driver (right now, pyodbc for MSSQL)

Installation and Local Development

1. Ensure you have the following installed:

2. Clone the repository:

git clone https://github.com/sb5m/tSQLoader.git
cd tsqloader

3. Create Virtual Environment

python -m venv .venv

Activate the virtual environment with:

. .venv\Scripts\activate

or

source .venv/bin/activate

4. Upgrade pip and install dependencies

pip install --upgrade pip
pip install -r requirements.txt

5. You are set. Package install can be performed with:

pip install .

PyPi Release

Build

python -m build

Upload

After pyproject.toml version bump...

twine upload dist/*

Usage

1. Import and Initialize

Begin by importing the DatabaseHandler class and initializing it with your database connection details:

from database_handler import DatabaseHandler

db_handler = DatabaseHandler(
    server="server_address",
    database="database_name",
    username="username",
    password="password"
)

2. Writing Data to Table

import pandas as pd

# Create a sample DataFrame
data = {
    'id': [1, 2],
    'name': ['Alice', 'Bob']
}
df = pd.DataFrame(data)

# Write the DataFrame to the database
db_handler.write_to_db(df, table_name="sample_table", primary_keys=["id"])

Prerequisites

Before using tSQLoader, you need to set up the required database and table. Use the following SQL script to create the table structure to replicate the table needed to execute the example above:

USE [SAMPLE_DB]
GO

/****** Table [dbo].[sample_table]   Script Date: 19.03.2025 ******/

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[sample_table](
    [id] [int] NOT NULL,
    [name] [varchar] (100) NULL
CONSTRAINT [PK_sample_table] PRIMARY KEY CLUSTERED
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

Contributing

Contributions are always welcome. If you’d like to improve the project, start by forking the repository and creating a new branch for your changes. Once your work is ready, push it to your fork and open a pull request.

Thank you for helping make this project better!

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

tsqloader-0.1.1.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

tsqloader-0.1.1-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file tsqloader-0.1.1.tar.gz.

File metadata

  • Download URL: tsqloader-0.1.1.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for tsqloader-0.1.1.tar.gz
Algorithm Hash digest
SHA256 1644bb105a9e95527bce0e9ba246878f206ab783c46532ba2564cbee3d4c53f4
MD5 f33609e926b4574de9c41e6a9976b01c
BLAKE2b-256 abd146f5b2cbf2e016c9fe8bcc0c3bae5ee51f5c584434e17b4d50f7e0391766

See more details on using hashes here.

File details

Details for the file tsqloader-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tsqloader-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for tsqloader-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c2d01eafff023e95769dadec2606a7e6349ee50516c11be9895a7a1a2dd69a26
MD5 e126d447c28ece3190ff14b16fbdc9c6
BLAKE2b-256 fecc36f4956e221f0a72b3abb5a4a17a522cda3f9a29a24bb106612a5395ca92

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