用于解析SQL语句的库。
项目描述
这是一个高度实验性的尝试,以拥有一个合理的解析库来解析MySQL语句。
目前 - 使用风险自担!
功能
- 解析某些SQL字符串。 
示例
可以访问的一些属性。
>>> import mysqlparse
>>> sql = mysqlparse.parse("""
...     ALTER TABLE `django_user` ADD COLUMN `notes` LONGTEXT NOT NULL
... """)
>>> print(sql.statements[0].statement_type)
ALTER
>>> print(sql.statements[0].table_name)
`django_user`
>>> print(sql.statements[0].ignore)
False
>>> print(sql.statements[0].alter_specification[0].alter_action)
ADD COLUMN
>>> print(sql.statements[0].alter_specification[0].column_name)
`notes`
>>> print(sql.statements[0].alter_specification[0].data_type)
LONGTEXT
>>> print(sql.statements[0].alter_specification[0].null)
False
>>> print(sql.statements[0].alter_specification[0].column_position)
LAST检查ALTER语句与SOME代码的先前版本向后兼容,该版本不知道如何将notes保存为NOT NULL
for statement in sql.statements:
    if statement != 'ALTER':
        continue
    for column in statement.alter_specification:
        if column.data_type == 'LONGTEXT':
            if column.null is False and column.default != 'NULL':
                print "{s.table_name}.{c.column_name} is `LONGTEXT NOT NULL` which may break the production system. Use `LONGTEXT DEFAULT NULL` instead.".format(
                    s=statement,
                    c=column,
                )你能如何帮助?
一些建议(从相对容易的):
- 提出一个边缘情况语句的问题,该语句应该解析,但实际上没有。 
- 提出如何使用此库的问题。 
- 记录解析对象中可用的属性。 
- 添加缺失的测试用例或建议一种避免在测试中重复检查相同语句(但略有变化)的方法。 
- 建议如何使用pyparsing进行语句验证。 
- 也许可以从MySQL源代码中生成pyparsing解析器? 
- 添加将解析(子)树反解析回有效SQL的能力。 
为什么?
由于缺乏更好的工具而感到沮丧。
历史
待定
- (在此行下方插入新的发行说明) 
0.1.6 (2017-06-16)
- 添加对ALTER TABLE .. CHANGE COLUMN语句的支持(由[@jgysland](https://github.com/jgysland))提供) 
0.1.5 (2016-08-23)
- 将许可证从 AGPLv3 更改为 MIT 许可证。 
0.1.4 (2016-02-28)
- 恢复 HISTORY.rst。 
- 添加 mysqlparse.parse 函数。 
- 添加 six 作为依赖项,以简化编写兼容 Py2 和 Py3 的代码。 
- 添加对 ALTER TABLE .. MODIFY [COLUMN] 语句的支持。 
- 添加对 ALTER TABLE .. DROP * 语句的支持。 
- 将版本字符串从 setup.py 移至 mysqlparse。 
0.1.3 (2016-02-20)
- 更新 README.rst。 
- 添加对 ALTER TABLE ... ADD INDEX 语句的支持。 
0.1.2 (2016-02-16)
- 进行了一些整理。 
- 移除了 defaultValue 解析操作。 
- 改进了 NULL 处理。 
- 更新测试以通过。 
0.1.1 (2016-02-15)
- 修复了打包配置。 
0.1.0 (2016-02-15)
- 首次发布,包含解析部分 ALTER TABLE ... ADD COLUMN 语句的代码。 
项目详情
mysqlparse-0.1.6.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 69d95f41624aa06303e464769f31a173d936c925554b44e2025afec0b676bfaa | |
| MD5 | 473a255604e83c64801146396a6e5bb2 | |
| BLAKE2b-256 | 51bdcaa4a328194927767c8f04662f56405927255a8f8681b4633b1d4cd1a533 |