{"id":43717,"library":"qh-flora-sql-parser","title":"Flora SQL Parser","description":"Flora SQL Parser is a JavaScript library for parsing SQL SELECT statements into abstract syntax trees (AST) and converting ASTs back to SQL. The current stable version is 0.10.1, released intermittently with no fixed cadence. It is based on the SQL parser from Alibaba's nquery module and focuses on SELECT statements, with limited support for other DML statements. It supports ANSI SQL and requires Node.js >= 6. Unlike more comprehensive parsers like sqlite-parser or node-sql-parser, it is lighter but with narrower scope.","status":"active","version":"0.10.1","language":"javascript","source_language":"en","source_url":"https://github.com/qing-hai/flora-sql-parser","tags":["javascript","sql","parser","ast"],"install":[{"cmd":"npm install qh-flora-sql-parser","lang":"bash","label":"npm"},{"cmd":"yarn add qh-flora-sql-parser","lang":"bash","label":"yarn"},{"cmd":"pnpm add qh-flora-sql-parser","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"Library supports both ESM and CJS; but ESM is preferred for modern projects.","wrong":"const Parser = require('flora-sql-parser').Parser;","symbol":"Parser","correct":"import { Parser } from 'flora-sql-parser';"},{"note":"Alternative pattern: import { astToSQL } from 'flora-sql-parser/dist/astToSQL'; but direct import from util is simpler.","wrong":"const { astToSQL } = require('flora-sql-parser').util;","symbol":"util.astToSQL","correct":"import { util } from 'flora-sql-parser'; const astToSQL = util.astToSQL;"},{"note":"No default export; you must destructure.","wrong":"const floraSQLParser = require('flora-sql-parser');","symbol":"default import","correct":"import floraSQLParser from 'flora-sql-parser';"}],"quickstart":{"code":"import { Parser, util } from 'flora-sql-parser';\n\nconst parser = new Parser();\nconst sql = 'SELECT id, name FROM users WHERE age > 18';\nconst ast = parser.parse(sql);\nconsole.log('AST:', JSON.stringify(ast, null, 2));\n\nconst sqlBack = util.astToSQL(ast);\nconsole.log('SQL back:', sqlBack);","lang":"typescript","description":"Parses a SELECT SQL statement into an AST and converts it back to SQL, demonstrating round-trip parsing."},"warnings":[{"fix":"Use another library (e.g., node-sql-parser) for full DML support.","message":"Does not support INSERT, UPDATE, DELETE statements — only SELECT.","severity":"breaking","affected_versions":">=0.0.0"},{"fix":"Set MySQL sql_mode to 'ANSI' before executing generated queries.","message":"Generated SQL is ANSI SQL compliant. MySQL requires SET SESSION sql_mode = 'ANSI' to avoid errors.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use https://github.com/qing-hai/flora-sql-parser","message":"The GitHub repository URL has changed from godmodelabs to qing-hai. Old links may break.","severity":"deprecated","affected_versions":">=0.10.0"},{"fix":"Wrap parse() in try-catch.","message":"Parser.parse() throws on invalid SQL; no graceful error handling.","severity":"gotcha","affected_versions":">=0.0.0"}],"env_vars":null,"search_vec":"'0.10.1':32 '6':70 'abstract':17 'alibaba':47 'ansi':65 'ast':20,23,94 'back':24 'base':41 'cadenc':38 'comprehens':73 'convert':22 'current':28 'dml':61 'fix':37 'flora':1,4 'focus':52 'intermitt':34 'javascript':9,91 'librari':10 'lighter':86 'like':75 'limit':57 'modul':50 'narrow':89 'node':81 'node-sql-pars':80 'node.js':69 'nqueri':49 'pars':12 'parser':3,6,45,74,78,83,93 'releas':33 'requir':68 'scope':90 'select':14,54 'sql':2,5,13,26,44,66,82,92 'sqlite':77 'sqlite-pars':76 'stabl':29 'statement':15,55,62 'support':58,64 'syntax':18 'tree':19 'unlik':71 'version':30","created_at":"2026-06-05T17:01:08.397086+00:00","updated_at":"2026-06-05T17:01:08.397086+00:00","problems":[{"fix":"Use import { Parser } from 'flora-sql-parser' or const { Parser } = require('flora-sql-parser').","cause":"Using default import when only named export exists.","error":"TypeError: Parser is not a constructor"},{"fix":"Ensure input is a valid SELECT statement. For other DML, use a different parser.","cause":"Non-SELECT SQL or malformed query.","error":"SyntaxError: Unexpected token at position X"},{"fix":"Run npm install flora-sql-parser and verify import path.","cause":"Package not installed or incorrect import path.","error":"Error: Can't find module 'flora-sql-parser'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"quickstart_score":null,"quickstart_tag":null,"pypi_latest":null,"cli_name":null,"cli_version":null,"type":"library","homepage":"https://github.com/qing-hai/flora-sql-parser","github":"https://github.com/qing-hai/flora-sql-parser","docs":null,"changelog":null,"pypi":null,"npm":"qh-flora-sql-parser","openapi_spec":null,"status_page":null,"smithery":null,"categories":["database"],"base_url":null,"auth_type":null,"provenance":{"verified_status":null,"verified_at":null,"last_verified":"2026-06-05","next_check":"2026-09-03","install_tag":null}}