Skip to main content

A new package that helps developers ensure column safety in SQLite queries by analyzing and validating their SQL statements. The package takes a user's SQL query as text input and returns a structured

Project description

sqlite-column-sentry

PyPI version License: MIT Downloads LinkedIn

sqlite-column-sentry is a lightweight Python package that helps developers validate SQLite queries for column‑related safety issues. It analyzes a user‑provided SQL statement and returns structured feedback about missing columns, incorrect data types, unsafe references, and more. The package leverages LLM7 (via langchain_llm7) and llmatch‑messages to provide clear, actionable suggestions, catching potential runtime errors before they happen.


Installation

pip install sqlite_column_sentry

Quick Start

from sqlite_column_sentry import sqlite_column_sentry

# Simple usage with the default LLM7 backend
sql = "SELECT name, age FROM users WHERE id = ?;"
issues = sqlite_column_sentry(user_input=sql)

print(issues)
# Example output: ['Column "age" may be NULLable but is used in a NOT NULL context']

Parameters

Parameter Type Description
user_input str The SQLite query you want to validate.
llm Optional[BaseChatModel] A LangChain LLM instance. If omitted, the package creates a default ChatLLM7 instance.
api_key Optional[str] API key for LLM7. If omitted, the function reads LLM7_API_KEY from the environment (or falls back to a placeholder).

Using a Custom LLM

You can plug any LangChain‑compatible LLM that follows the BaseChatModel interface.

OpenAI

from langchain_openai import ChatOpenAI
from sqlite_column_sentry import sqlite_column_sentry

llm = ChatOpenAI()
issues = sqlite_column_sentry(user_input="SELECT * FROM products;", llm=llm)

Anthropic

from langchain_anthropic import ChatAnthropic
from sqlite_column_sentry import sqlite_column_sentry

llm = ChatAnthropic()
issues = sqlite_column_sentry(user_input="INSERT INTO orders (id, amount) VALUES (1, 100);", llm=llm)

Google Gemini

from langchain_google_genai import ChatGoogleGenerativeAI
from sqlite_column_sentry import sqlite_column_sentry

llm = ChatGoogleGenerativeAI()
issues = sqlite_column_sentry(user_input="UPDATE accounts SET balance = balance - 10 WHERE id = 5;", llm=llm)

LLM7 Default Configuration

  • The package uses ChatLLM7 from the langchain_llm7 package by default.
  • Free‑tier LLM7 rate limits are sufficient for most development workflows.
  • To increase limits, provide your own API key:
    issues = sqlite_column_sentry(
        user_input="SELECT * FROM logs;",
        api_key="YOUR_LLM7_API_KEY"
    )
    
  • Obtain a free API key by registering at https://token.llm7.io/.

Contributing

Contributions, bug reports, and feature requests are welcome! Please open an issue or submit a pull request on the GitHub repository.


License

This project is licensed under the MIT License.


Author

Eugene Evstafev
📧 Email: hi@eugene.plus
🐙 GitHub: chigwell


Repository & Issues

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

sqlite_column_sentry-2025.12.21152531.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

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

File details

Details for the file sqlite_column_sentry-2025.12.21152531.tar.gz.

File metadata

File hashes

Hashes for sqlite_column_sentry-2025.12.21152531.tar.gz
Algorithm Hash digest
SHA256 84861d04e7f798b1cd4ce241213a063c69ce2df3c39438c5f182e3503a8d60d1
MD5 d5acdf369b00732045fa9819beb51e30
BLAKE2b-256 d5d2a9b9db604d3cd80293b1324c43b2b6d976b032bef8121d53827f2fb1a02d

See more details on using hashes here.

File details

Details for the file sqlite_column_sentry-2025.12.21152531-py3-none-any.whl.

File metadata

File hashes

Hashes for sqlite_column_sentry-2025.12.21152531-py3-none-any.whl
Algorithm Hash digest
SHA256 556ed70490b631cc1bbe5329f5d71130b5beac9cc385e7736616c3de67d4c195
MD5 ad40a2fe3eea1ec91ce49c67fa9789f0
BLAKE2b-256 02005906030c3398d9a97c6c143e2790218cacdda280fa69e0d5cdde03be8c47

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