SQLGlot: SQL Parser, Transpiler, and Optimizer

30.1.0 · active · verified Sat Mar 28

SQLGlot is a powerful Python library for parsing, transpiling, optimizing, and even executing SQL. It supports translating SQL across over 30 different database dialects, enabling cross-dialect compatibility, query parsing into Abstract Syntax Trees (ASTs), programmatic query rewriting, and optimization. It's known for being a fast, pure-Python solution with no external dependencies and is regularly among the top Python package downloads. The library is currently at version 30.1.0 and follows a versioning strategy where MINOR version increments can introduce backwards-incompatible changes.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates basic SQL parsing and cross-dialect transpilation. The `parse_one` function converts a SQL string into an Abstract Syntax Tree (AST), while `transpile` converts SQL between specified dialects. It also shows a common pattern for transforming MySQL-specific functions to BigQuery equivalents.

from sqlglot import parse_one, transpile

# Parse a SQL query (defaults to SQLGlot dialect if 'read' is not specified)
sql_query = "SELECT id, name FROM users WHERE age > 18"
expression = parse_one(sql_query)
print(f"Parsed Expression: {expression}")

# Transpile from MySQL to BigQuery
mysql_query = "SELECT IFNULL(employee_name, 'Unknown') AS employee_status FROM employees;"
bigquery_query = transpile(mysql_query, read="mysql", write="bigquery")[0]
print(f"Transpiled to BigQuery: {bigquery_query}")

# Further manipulation of the AST is possible with `expression` object
# E.g., print(expression.find_all(exp.Column))

view raw JSON →