0%

python-sqlparse使用

sqlparase模块提供三个简单的功能

split()行数可以将多个SQL语句的字符串拆分为单个语句的列表

1
2
3
4
>>> import sqlparse
>>> sql = 'select * from foo; select * from bar;'
>>> print(sqlparse.split(sql))
['select * from foo;', 'select * from bar;']

使用format()函数可以美化SQL语句

1
2
3
4
5
6
7
>>> sql = "select * from foo where id in (select id from bar);"
>>> print(sqlparse.format(sql, reindent=True, keyword_case='upper'))
SELECT *
FROM foo
WHERE id IN
(SELECT id
FROM bar);

使用parse()函数,会解析sql并返回多个Statement对象

1
2
3
4
>>> sql = "select * from foo where id in (select id from bar);"
>>> stmt = sqlparse.parse(sql)[0]
>>> print(stmt.tokens)
[<DML 'select' at 0x206F17C6768>, <Whitespace ' ' at 0x206F17C67C8>, <Wildcard '*' at 0x206F17C6828>, <Whitespace ' ' at 0x206F17C6888>, <Keyword 'from' at 0x206F17C68E8>, <Whitespace ' ' at 0x206F17C6948>, <Identifier 'foo' at 0x206F179CC00>, <Whitespace ' ' at 0x206F17C6D68>, <Where 'where ...' at 0x206F179C9A8>]