wordmarker.data.formatter 源代码
from abc import ABCMeta, abstractmethod
[文档]class Formatter(metaclass=ABCMeta):
"""
::
格式化的抽象类
"""
[文档] @abstractmethod
def format(self, *args):
"""
.. note::
格式化数据
:param args: 数据
:return: - 格式化后的数据
"""
pass
[文档]class SqlFormatter(Formatter):
"""
::
格式化sql语句
"""
[文档] def format(self, sql):
"""
.. note::
格式化用户输入的sql语句
例如:
.. code-block:: sql
:linenos:
-- 输入 --
select * from t_user where username=? and password=?
-- 输出 --
select * from t_user where username=:a and password=:b
.. caution::
拼接的 ``:a`` ``:b`` 使用的是26个字母,也就是说一次查询的 ``?`` ,不能超过26个。
:param sql: sql语句
:return: - 格式化后的sql语句
"""
sql_list = list(sql)
index = 0
n = 97
for i in sql_list:
if i == '?':
sql_list[index] = ':' + chr(n)
n += 1
index += 1
return ''.join(sql_list)