A simple connector for GCP databases
Project description
Low Overhead GCP Database Connector.
Low-overhead connections to Google Cloud SQL databases, optionally supporting IAM Authentication.
Prerequisites
- Google Cloud Project: A GCP project with Cloud SQL enabled.
- Cloud SQL Instance: A PostgreSQL instance configured for IAM authentication.
IAM Authentication (Optional)
- IAM User: A database user mapped to a Google Cloud IAM service account or user.
- Authentication:
- Locally:
gcloud auth application-default login - Production: Service Account attached to the environment (VM, GKE, Cloud Run).
- Locally:
Poastgres
1. Psycopg3 Connection Pool
Example using psycopg (version 3) to connect to Cloud SQL. It can automatically resolve the instance IP and inject the IAM token.
Dependencies:
psycopg3.3.0 or highergoogle-auth
import psycopg
from psycopg_pool import ConnectionPool
from simple_gcp_connector.psycopg import GoogleCloudConnInfoProvider
# Use the instance connection name (project:region:instance).
INSTANCE_CONNECTION_NAME = "my-project:us-central1:my-instance"
DB_USER = "your-sa-email@your-project.iam" # note there is no .gserviceaccount.com
DB_NAME = "your-database-name" # likely postgres
DATABASE_URL = f"postgresql://{DB_USER}@IGNORED-HOST/{DB_NAME}?sslmode=require"
def create_pool():
get_conninfo = GoogleCloudConnInfoProvider(
DATABASE_URL,
instance_connection_name=INSTANCE_CONNECTION_NAME
)
return ConnectionPool(
conninfo=get_conninfo,
min_size=1,
max_size=5
)
# Usage
with create_pool() as pool:
with pool.connection() as conn:
print("Connected!")
# ... execute queries ...
2. SQLAlchemy
Use sqlalchemy to connect to Cloud SQL. If you are using the instance connection name, it will automatically resolve the instance IP and inject the IAM token unless enable_iam_auth is set to false (it's True by default).
Dependencies:
sqlalchemypsycopg(orpg8000)google-auth
import sqlalchemy
from sqlalchemy import create_engine
from simple_gcp_connector.sqlalchemy import register_connector
# Configuration
INSTANCE_CONNECTION_NAME = "my-project:us-central1:my-instance"
DB_USER = "your-sa-email@your-project.iam"
DB_NAME = "your-database-name"
engine = create_engine(
f"postgresql+psycopg://{DB_USER}@/{DB_NAME}",
connect_args={"sslmode": "require"}
)
register_connector(engine, instance_connection_name=INSTANCE_CONNECTION_NAME)
# Usage
with engine.connect() as connection:
result = connection.execute(sqlalchemy.text("SELECT 1"))
print(result.fetchone())
Note on Cloud SQL Proxy
If you are using the Cloud SQL Auth Proxy (sidecar or local process), you don't need instance_connection_name. You can simply point to 127.0.0.1.
# Psycopg w/ Proxy
get_conninfo = GoogleCloudConnInfoProvider("postgresql://user@127.0.0.1:5432/db")
# SQLAlchemy w/ Proxy
engine = create_engine("postgresql+psycopg://user@127.0.0.1:5432/db")
register_connector(engine)
Setup Notes
- Ensure the Service Account (or user) has the
Cloud SQL Clientrole and is added as an IAM user in the Cloud SQL instance. - If youa
enable_iam_authenticationflag must be set toonfor your Cloud SQL instance.
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
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 simple_gcp_connector-0.1.2.tar.gz.
File metadata
- Download URL: simple_gcp_connector-0.1.2.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
240df5b5817eecaa8b6d57b7b0dd997d54f3bb461db3b81f0b5a7e53e84d85f3
|
|
| MD5 |
c1a125406366f895569ed1a4bf85e9bc
|
|
| BLAKE2b-256 |
5c0d4c76ce6138676c86059e77b84a5246f29117a672c9096d74c4c706a34752
|
File details
Details for the file simple_gcp_connector-0.1.2-py3-none-any.whl.
File metadata
- Download URL: simple_gcp_connector-0.1.2-py3-none-any.whl
- Upload date:
- Size: 7.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6a079bc14e23c1dd09d628aa10f486f243b4a58435dfa95c694318ff67150ce
|
|
| MD5 |
095fee143e4c5a54df70c56984f98d43
|
|
| BLAKE2b-256 |
422e33450029709325f2da651a52aa4ee25acf996f4e5804943289143674f649
|