我在工作的时候,在测试环境下使用的数据库跟生产环境的数据库不一致,当我们的测试环境下的数据库完成测试准备更新到生产环境上的数据库时候,需要准备更新脚本,真是一不小心没记下来就会忘了改了哪里,哪里添加了什么,这个真是非常让人头疼。因此我就试着用Python来实现自动的生成更新脚本,以免我这烂记性,记不住事。
主要操作如下:
1.在原先 basedao.py 中添加如下方法,这样旧能很方便的获取数据库的数据,为测试数据库和生产数据库做对比打下了基础。
1 def select_database_struts(self): 2 ''' 3 查找当前连接配置中的数据库结构以字典集合 4 ''' 5 sql = '''SELECT COLUMN_NAME, IS_NULLABLE, COLUMN_TYPE, COLUMN_KEY, COLUMN_COMMENT 6 FROM information_schema.`COLUMNS` 7 WHERE TABLE_SCHEMA="%s" AND TABLE_NAME="{0}" '''%(self.__database) 8 struts = {} 9 for k in self.__primaryKey_dict.keys(): 10 self.__cursor.execute(sql.format(k)) 11 results = self.__cursor.fetchall() 12 struts[k] = {} 13 for result in results: 14 struts[k][result[0]] = {} 15 struts[k][result[0]]["COLUMN_NAME"] = result[0] 16 struts[k][result[0]]["IS_NULLABLE"] = result[1] 17 struts[k][result[0]]["COLUMN_TYPE"] = result[2] 18 struts[k][result[0]]["COLUMN_KEY"] = result[3] 19 struts[k][result[0]]["COLUMN_COMMENT"] = result[4] 20 return self.__config, struts