驼峰和下划线命名风格互转

之前用在SQLAlchemy的ORM模型的类名(驼峰风格)和数据库表名(下划线风格)的转换。

Python类名驼峰风格这个不用解释,数据库表名使用下划线风格主要是因为一些数据库系统如果使用了带大写字母的表名,那么在select、insert、update、delete语句中都要用特殊分割符包住表名才能使用,很麻烦。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 驼峰转下划线
def hump_to_underline(name, drop_first_underline=True):
result = re.sub(r'([A-Z])', r'_\1', name).lower()
if drop_first_underline and result[0] == '_':
result = result[1:]
return result

# 下划线转驼峰
def underline_to_hump(name, capitalize_first_letter=True):
ret = ""
i = 0
while i < len(name):
if name[i] == '_' and i+1 < len(name) and name[i+1] != '_':
i += 1
ret += name[i].upper()
else:
ret += name[i]
i += 1
if capitalize_first_letter:
return ret[0].upper()+ret[1:]
else:
return ret