python作為一個簡潔的語言抢韭,在作為工具、監(jiān)控以及運維等方面的使用上的確令人耳目一新体谒。于是嘗試使用python做一個簡陋的javaBean生成工具填抬,目前很多人喜歡在數(shù)據(jù)庫表命名的時候采用underline的方式如"xx_xx_table",而javabean的命名通常為camel方式辆童,如"myBean"召川。下面看看python能做些什么。
首先需要連接到數(shù)據(jù)庫胸遇,獲取生成javabean對應(yīng)數(shù)據(jù)庫表的信息
import pymysql
conn = pymysql.connect(host=_host,user=_user,passwd=_pass,db=_sid,port=3306,charset='utf8')
cur = conn.cursor()
sql ='select * from '+ _tableName
cur.execute(sql)
desc = cur.description
從cur.description可以獲取數(shù)據(jù)庫表的字段名稱以及類型荧呐,字段類型使用數(shù)字進行標(biāo)注,以下是字段類型對照關(guān)系
1=>'tinyint',
2=>'smallint',
3=>'int',
4=>'float',
5=>'double',
7=>'timestamp',
8=>'bigint',
9=>'mediumint',
10=>'date',
11=>'time',
12=>'datetime',
13=>'year',
16=>'bit',
//252 is currently mapped to all text and blob types (MySQL 5.0.51a)
253=>'varchar',
254=>'char',
246=>'decimal'
有了以上的這些信息纸镊,剩下的事情就簡單了倍阐。只需要把字段轉(zhuǎn)成camel方式即可
def underline_to_camel(underline_format):
camel_format = ''
if isinstance(underline_format, str):
for _s_ in underline_format.split('_'):
camel_format += _s_.capitalize()
return camel_format
上面這個函數(shù)轉(zhuǎn)出來的效果所有首字母大寫。這個可以在循環(huán)里面單獨處理逗威,或者對已經(jīng)生成的camel字符串處理即可
newCamel = camel[0].lower() + camel[1:]
拼裝javabean峰搪。
for line in desc:
#根據(jù)mysql類型以及自己的需要對dateType進行轉(zhuǎn)換
if line[1] in (1, 2, 3, 8, 9, 246):
dataType = 'int'
elif line[1] in (4, 5):
dataType = 'double'
else:
dataType = 'String'
#轉(zhuǎn)換camel寫法,并拼裝javabean
beanName = underline_to_camel(line[0], 'V')
funcName = underline_to_camel(line[0], 'F')
lineStr = " /** \n"
lineStr += " * 字段" + beanName + "\n"
lineStr += " */\n"
lineStr += " private " + dataType + " " + beanName + ";\n"
lineStr += " public " + dataType + " get" + funcName + "() { return " + beanName + "; }\n"
lineStr += " public void set" + funcName + "(" + dataType + " " + beanName + ") { this." + beanName + " = " + beanName + "; }\n"
beanList.append(lineStr)
拼裝完成后凯旭,寫文件概耻,關(guān)閉數(shù)據(jù)庫連接就完成了這個乞丐版的javabean生成工具了使套。依次類推還可以生成DAO,XML