Skip to 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

Notifications You must be signed in to change notification settings

chigwell/sqlite-column-sentry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 

Repository files navigation

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