{"id":10260,"library":"sqlvalidator","title":"SQLValidator","description":"SQLValidator is a Python library (current version 0.0.20) for formatting, syntactic, and semantic validation of SQL queries. It's built on `sqlparse` and provides a simple `SQLValidation` object and a helper `validate_sql` function. Releases are typically driven by new SQL feature support and bug fixes, with minor versions often adding functionality.","status":"active","version":"0.0.20","language":"python","source_language":"en","source_url":"https://github.com/David-Wobrock/sqlvalidator","tags":["sql","validation","formatting","sqlparse"],"install":[{"cmd":"pip install sqlvalidator","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Core parsing and formatting engine for SQL statements.","package":"sqlparse"}],"imports":[{"wrong":"from sqlvalidator import SQLValidation","symbol":"SQLValidation","correct":"from sqlvalidator import sql_validator"},{"symbol":"format_sql","correct":"from sqlvalidator import format_sql"},{"symbol":"parse","correct":"from sqlvalidator import parse"}],"quickstart":{"code":"from sqlvalidator import SQLValidation\n\n# Example 1: Basic syntax validation and formatting\nsql_query_1 = \"SELECT * FROM users WHERE id = 1 AND name = 'Alice'\"\nsql_obj_1 = SQLValidation(sql_query_1)\n\nprint(f\"Query 1 validation result: {sql_obj_1.validate()}\")\nprint(f\"Query 1 errors: {sql_obj_1.errors}\")\nprint(f\"Formatted Query 1:\\n{sql_obj_1.format()}\")\n\n# Example 2: Semantic validation with table schema\nsql_query_2 = \"SELECT first_name, email FROM employees WHERE department_id = 10\"\nsql_obj_2 = SQLValidation(sql_query_2)\n\n# Define table schema for semantic validation\ntables_schema = {\n    'employees': ['id', 'first_name', 'last_name', 'email', 'department_id'],\n    'departments': ['id', 'name']\n}\n\nsql_obj_2.validate(tables=tables_schema)\nprint(f\"\\nQuery 2 validation result (semantic): {sql_obj_2.is_valid}\")\nprint(f\"Query 2 errors (semantic): {sql_obj_2.errors}\")\n\n# Example 3: Invalid query\ninvalid_sql = \"SELECT FROM users WHERE id = 1\"\nsql_obj_3 = SQLValidation(invalid_sql)\nsql_obj_3.validate()\nprint(f\"\\nInvalid query errors: {sql_obj_3.errors}\")","lang":"python","description":"Demonstrates basic syntactic validation, formatting, and more advanced semantic validation by providing a table schema. The `is_valid` property and `errors` list provide detailed results."},"warnings":[{"fix":"Always provide the `tables` parameter for semantic validation: `sql_obj.validate(tables={'table_name': ['col1', 'col2']})`.","message":"Semantic validation (checking for valid table/column names) requires passing a `tables` dictionary to the `validate()` method. Without it, only syntactic validation is performed.","severity":"gotcha","affected_versions":"All versions"},{"fix":"Pin your dependency to a specific minor version (`sqlvalidator==0.0.20`) and review changelogs when upgrading to a new minor version.","message":"The library is in early `0.0.x` versions. While no major breaking changes are explicitly documented between minor releases yet, the API might evolve in future `0.x` versions before reaching a stable `1.0.0` release.","severity":"gotcha","affected_versions":"0.0.1 to 0.0.20"},{"fix":"If you have multiple queries, parse and validate them individually. Consider using `sqlparse.parse` to split complex scripts into individual statements first.","message":"The `SQLValidation` object processes a single SQL query string. Passing multiple concatenated queries (e.g., `\"SELECT 1; SELECT 2;\"`) may lead to unexpected parsing or validation results, as `sqlvalidator` focuses on validating individual statements.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"search_vec":"'0.0.20':9 'ad':52 'bug':46 'built':21 'current':7 'driven':39 'featur':43 'fix':47 'format':11,56 'function':35,53 'helper':32 'librari':6 'minor':49 'new':41 'object':29 'often':51 'provid':25 'python':5 'queri':18 'releas':36 'semant':14 'simpl':27 'sql':17,34,42,54 'sqlpars':23,57 'sqlvalid':1,2,28 'support':44 'syntact':12 'typic':38 'valid':15,33,55 'version':8,50","created_at":"2026-04-17T01:23:12.341994+00:00","updated_at":"2026-04-17T01:23:12.341994+00:00","problems":null,"ecosystem":"pypi","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":"0.0.20","cli_name":"","cli_version":null,"type":"library","homepage":null,"github":"https://github.com/David-Wobrock/sqlvalidator","docs":null,"changelog":null,"pypi":"https://pypi.org/project/sqlvalidator/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null,"categories":["serialization","database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":"passing","verified_at":"2026-06-30","last_verified":"2026-06-30","next_check":"2026-07-30","install_tag":null}}