PostgreSQL Connector with TimescaleDB and pgvector support for Python 3.12+
Project description
🚀 PostgresConnector
📖 Introduction
Welcome to PostgresConnector, the ultimate database connection package built for our team's data engineering and AI workflows.
This package simplifies interactions with PostgreSQL databases by automating tedious tasks like schema evolution, data type mapping, and bulk upserts. It goes beyond standard SQL by providing native, out-of-the-box support for TimescaleDB (for time-series data) and pgvector (for AI embeddings).
✨ Key Features
- Smart Upsert (
ON CONFLICT DO UPDATE): Blazing fast data ingestion with conflict resolution strategies (last,sum,skip). - Auto Schema Evolution: Automatically adds missing columns to your database tables based on your Pandas DataFrames.
- Native JSONB Support: Automatically detects nested Python dictionaries/lists and maps them to PostgreSQL
JSONBformat. - TimescaleDB Integration: Easily convert standard tables into hypertables for optimized time-series data storage.
- pgvector for AI: Automatically detects lists of floats (embeddings) and creates Vector columns with HNSW/IVFFlat indexing for fast similarity searches.
📂 Directory Structure
This project is managed using Poetry. The standard structure looks like this:
PostgreSQLConnector/
│
├── pyproject.toml # Poetry configuration, metadata, and dependencies
├── README.md # This documentation file
├── src/ # The actual Python module
│ ├── __init__.py
│ └── postgres_connector.py
└── notebooks/ # (Optional) Tutorials and examples
└── Tutorial.ipynb
💻 Installation
This package is published on PyPI. You can easily install it into your project using your preferred package manager.
Using Poetry (Recommended):
poetry add PostgreSQLConnector
Using pip:
pip install PostgreSQLConnector
🛠️ Dependencies
This package relies on several powerful Python libraries to function properly.
pandas - For data manipulation and structures.
SQLAlchemy - For database connection and ORM capabilities.
psycopg2-binary - The most popular PostgreSQL adapter for Python.
pgvector - For handling vector data types and AI embeddings in SQLAlchemy.
loguru - For beautiful, easy-to-read logging.
🚀 Quick Start
Here is a quick example of how to connect and upsert data using the connector:
import pandas as pd
from postgres_connector import PostgresConnector
# 1. Initialize the connection
pg = PostgresConnector(
host='localhost',
database='my_database',
username='my_user',
password='my_password'
)
# 2. Prepare your data
data = {
'id': [1, 2],
'name': ['Alice', 'Bob'],
'role': ['Admin', 'User']
}
df = pd.DataFrame(data)
# 3. Upsert into the database (Creates table if it doesn't exist!)
pg.upsert_data(
df=df,
target_table='team_members',
primary_key='id'
)
# 4. Close the connection
pg.dispose()
For more advanced use cases, including TimescaleDB and pgvector for AI embeddings, please refer to the Tutorial.ipynb file included in this repository.
👨💻 Creator
Created by: Nguyen Minh Son, CQF (MinhSonCQF)
Contact / Support: nguyen.minhson1511@gmail.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyposconnector-0.1.2.tar.gz.
File metadata
- Download URL: pyposconnector-0.1.2.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c3a04ac5b2ec92c0f2f31f0db58232c78c265fafa03378c2eb1e6cffdd036e0
|
|
| MD5 |
b5354ee9a54d06af8ed368f0dbc801ef
|
|
| BLAKE2b-256 |
2cdae55f24b02179a01a898386f3621ba958adb624dcd83818e6f0e5c6ef6b66
|
File details
Details for the file pyposconnector-0.1.2-py3-none-any.whl.
File metadata
- Download URL: pyposconnector-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e5f503edbbd932f10f070982f2b1e3d8bc6deab48d59d4114874430c646d602
|
|
| MD5 |
3b34f85763faa8a4b59a8c50ba682520
|
|
| BLAKE2b-256 |
6103a7d37adcbcffbe07084efed7e6f4309a9ce176ff80d943e274cd2015fc6a
|