| import pymysql |
| |
| |
| class DataDict(object): |
| |
| def __init__(self, db): |
| self.host = '127.0.0.1' |
| self.port = 3306 |
| self.user = 'root' |
| self.password = 'root' |
| self.database = db |
| |
| def run(self, tables): |
| |
| try: |
| conn = pymysql.connect(host=self.host, |
| port=self.port, |
| user=self.user, |
| password=self.password, |
| database=self.database) |
| cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) |
| print('数据库[%s:%d]连接成功' % (self.host, self.port)) |
| except Exception: |
| print('数据库[%s:%d]连接失败' % (self.host, self.port)) |
| exit(1) |
| |
| |
| file_name = self.database + '.md' |
| dict_file = open(file_name, mode='a', encoding='UTF-8') |
| |
| |
| tables_arr = [] |
| if tables == 'all': |
| sql = "SELECT `TABLE_NAME`, `TABLE_COMMENT` FROM information_schema.TABLES WHERE TABLE_SCHEMA= '%s'" % self.database |
| cursor.execute(sql) |
| for table in cursor.fetchall(): |
| table_name = table['TABLE_NAME'] |
| tables_arr.append(table_name) |
| else: |
| tables_arr = table_str.split(',') |
| |
| |
| for table_name in tables_arr: |
| table_name = table_name.strip() |
| |
| |
| sql = "SELECT `TABLE_COMMENT` FROM information_schema.TABLES WHERE TABLE_SCHEMA = '%s' AND `TABLE_NAME` = '%s'" % (self.database, table_name) |
| cursor.execute(sql) |
| if cursor.rowcount == 0: |
| print('[%s]表不存在' % table_name) |
| continue |
| table_info = cursor.fetchone() |
| table_comment = table_info['TABLE_COMMENT'] |
| dict_file.write('#### %s %s' % (table_name, table_comment)) |
| dict_file.write('\n| 字段名称 | 字段类型 | 允许NULL | 默认值 | 索引 | 字段注释 |') |
| dict_file.write('\n| --- | --- | --- | --- | --- | --- |') |
| |
| |
| field_str = "COLUMN_NAME, COLUMN_TYPE, IS_NULLABLE, COLUMN_DEFAULT, COLUMN_KEY, COLUMN_COMMENT" |
| sql = "SELECT %s FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='%s' AND `TABLE_NAME` = '%s'" % (field_str, self.database, table_name) |
| cursor.execute(sql) |
| for field in cursor.fetchall(): |
| column_name = field['COLUMN_NAME'] |
| column_type = field['COLUMN_TYPE'] |
| column_nullable = field['IS_NULLABLE'] |
| column_key = field['COLUMN_KEY'] |
| column_default = str(field['COLUMN_DEFAULT']) |
| column_comment = field['COLUMN_COMMENT'] |
| info = "| %s | %s | %s | %s | %s | %s |" % (column_name, column_type, column_nullable, column_default, column_key, column_comment) |
| dict_file.write('\n' + info) |
| |
| dict_file.write('\n') |
| print('[%s]表生成完毕' % table_name) |
| |
| |
| dict_file.close() |
| cursor.close() |
| conn.close() |
| print('[%s]字典已生成' % file_name) |
| |
| |
| |
| if __name__ == '__main__': |
| db = input('请输入数据库名:') |
| dataDict = DataDict(db) |
| while True: |
| tables = input('输入表名<t1,t2,t3>获取指定表,或输入<all>获取全部,输入<q>退出:\n') |
| if tables == 'q': |
| print('Exit...') |
| break |
| dataDict.run(tables) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!