Pythone 3自動生成MySQLデータ辞書のmarkdownテキストの実現
なぜこの脚本を書きますか?
メーデー前の仕事の準備が終わった時、同僚がデータベースのある表のデータ辞書を作るために、複雑な人工操作をしています。フィールド一つのフィールドを使っています。オンラインで使えるものがあるかどうかは分かりませんが、理想と思いどおりのものは見つけられませんでした。ですから、自分で一つを選んで、いつまでも働いて、やればできるというような…
まず何度も脚本の考えを述べます。
ステップ1:データベース接続の設定情報を入力または変更し、データテーブル名を入力します。
第二ステップ:pymysqlモジュールを利用してデータベースに接続し、データテーブルが存在するかどうかを判断する。
ステップ3:データテーブルのコメントを取得する
第4ステップ:フォルダとファイル処理を保存し、既存のファイルを削除して重複書き込みを避ける。
ステップ5:まずMarkdownの表ヘッダ情報を書き込みます。
ステップ6:informationからschemaでテーブル構造と関連情報を調べます。
ステップ7:各フィールドのMarkdownテキストを順次綴り込み、関連する接続を終了します。
実行環境
Python運行環境:Windows+python 3.6
使用するモジュール:pymysql、os、time、pyinstaller
インストールされていないモジュールの場合は、pip install xxxxxを使ってインストールしてください。例えば、pip install pyinstaller
データベース接続情報を取得する2つの方法
データ辞書を作るには、まずデータベースに接続する必要があります。データベースに接続するには、まずデータベースの基本情報を知る必要があります。IPアドレス、ユーザー名、ログインパスワード、データベース名など…
便利さのために、私はここで二つの構成MySQL接続の方法を書きました。一つ目は直接コードに配置して、コードの中の接続情報を直接修正すればいいです。もう一つは、リンク情報を手動で入力することで、コードを変更する必要がなく、素早く多く使うことができます。具体的なソースコードは、同性の交友サイトGitHubにアップロードしました。下のリンクをクリックしてみてもいいです。修正コードの完全なソースコード:data_dictconfig.py 手動入力の完全なソースコード:data_dictinput.py 実行可能ファイルを生成
さまざまな人の便利さと高速のために、Python環境をインストールしてpyスクリプトファイルを実行しなくてもいいです。関連スクリプトをWindowsで直接実行できるexeファイルに包装して、ダブルクリックして実行してもいいです。具体的な使い方はネットで調べられます。
パッケージコマンドは
このコマンドを実行すると、現在のディレクトリの下に、dictと他のフォルダと関連ファイルが生成されます。dictを開いて、次のファイル名が同じexeファイル
以下は2つの方式のスクリプトを、exe実行可能ファイルを作成しました。直接クリックしてダウンロードしてみてもいいです。ダウンロードできないなら、直接にGitHub倉庫にダウンロードしてください。または自分で作成してください。コードの実行可能ファイルを修正します。dictconfig.exe 手動入力の実行可能ファイル:data_dictinput.exe 完全コード
一部の人が怠けたくて、直接友達と付き合うサイトを調べないために、私もここにソースコードを貼ってきます。
ここで、Python 3が自動的にMySQLデータ辞書を生成するmarkdownテキストの実現に関する記事を紹介します。これに関連して、Python 3が自動的にmarkdownテキストの内容を生成します。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
メーデー前の仕事の準備が終わった時、同僚がデータベースのある表のデータ辞書を作るために、複雑な人工操作をしています。フィールド一つのフィールドを使っています。オンラインで使えるものがあるかどうかは分かりませんが、理想と思いどおりのものは見つけられませんでした。ですから、自分で一つを選んで、いつまでも働いて、やればできるというような…
まず何度も脚本の考えを述べます。
ステップ1:データベース接続の設定情報を入力または変更し、データテーブル名を入力します。
第二ステップ:pymysqlモジュールを利用してデータベースに接続し、データテーブルが存在するかどうかを判断する。
ステップ3:データテーブルのコメントを取得する
第4ステップ:フォルダとファイル処理を保存し、既存のファイルを削除して重複書き込みを避ける。
ステップ5:まずMarkdownの表ヘッダ情報を書き込みます。
ステップ6:informationからschemaでテーブル構造と関連情報を調べます。
ステップ7:各フィールドのMarkdownテキストを順次綴り込み、関連する接続を終了します。
実行環境
Python運行環境:Windows+python 3.6
使用するモジュール:pymysql、os、time、pyinstaller
インストールされていないモジュールの場合は、pip install xxxxxを使ってインストールしてください。例えば、pip install pyinstaller
データベース接続情報を取得する2つの方法
データ辞書を作るには、まずデータベースに接続する必要があります。データベースに接続するには、まずデータベースの基本情報を知る必要があります。IPアドレス、ユーザー名、ログインパスワード、データベース名など…
便利さのために、私はここで二つの構成MySQL接続の方法を書きました。一つ目は直接コードに配置して、コードの中の接続情報を直接修正すればいいです。もう一つは、リンク情報を手動で入力することで、コードを変更する必要がなく、素早く多く使うことができます。具体的なソースコードは、同性の交友サイトGitHubにアップロードしました。下のリンクをクリックしてみてもいいです。
さまざまな人の便利さと高速のために、Python環境をインストールしてpyスクリプトファイルを実行しなくてもいいです。関連スクリプトをWindowsで直接実行できるexeファイルに包装して、ダブルクリックして実行してもいいです。具体的な使い方はネットで調べられます。
パッケージコマンドは
pyinstaller
です。このコマンドを実行すると、現在のディレクトリの下に、dictと他のフォルダと関連ファイルが生成されます。dictを開いて、次のファイル名が同じexeファイル
pyinstaller -F -i favicon.ico data_dict_input.py
が生成されます。このファイルをダブルクリックして開くことができます。他の場所にコピーして、同じように使用できます。以下は2つの方式のスクリプトを、exe実行可能ファイルを作成しました。直接クリックしてダウンロードしてみてもいいです。ダウンロードできないなら、直接にGitHub倉庫にダウンロードしてください。または自分で作成してください。
一部の人が怠けたくて、直接友達と付き合うサイトを調べないために、私もここにソースコードを貼ってきます。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
MySQL
,
author: gxcuizy
date: 2020-04-30
"""
import pymysql
import os
import time
class DataDict(object):
def __init__(self, connect_info):
#
self.host_name = connect_info[0]
self.user_name = connect_info[1]
self.pwd = connect_info[2]
self.db_name = connect_info[3]
self.folder_name = 'mysql_dict'
def run(self, table_str):
""" """
try:
#
conn = pymysql.connect(self.host_name, self.user_name, self.pwd, self.db_name)
# cursor()
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
except Exception:
print(' , !')
exit(1)
table_list = table_str.split(',')
for table_name in table_list:
#
sql = "SHOW TABLES LIKE '%s'" % (table_name,)
cursor.execute(sql)
result_count = cursor.rowcount
if result_count == 0:
print('%s %s , ……' % (self.db_name, table_name))
continue
#
print(' %s ' % (table_name,))
sql = "show table status WHERE Name = '%s'" % (table_name,)
cursor.execute(sql)
result = cursor.fetchone()
table_comment = result['Comment']
#
file_path = self.folder_name + os.sep + table_name + '.md'
self.deal_file(file_path)
# ,
dict_file = open(file_path, 'a', encoding='UTF-8')
dict_file.write('#### %s %s' % (table_name, table_comment))
dict_file.write('
| | | | |')
dict_file.write('
| --- | --- | --- | --- |')
#
field_str = "COLUMN_NAME,COLUMN_TYPE,COLUMN_DEFAULT,COLUMN_COMMENT"
sql = "select %s from information_schema.COLUMNS where table_schema='%s' and table_name='%s'" % (field_str, self.db_name, table_name)
cursor.execute(sql)
fields = cursor.fetchall()
for field in fields:
column_name = field['COLUMN_NAME']
column_type = field['COLUMN_TYPE']
column_default = str(field['COLUMN_DEFAULT'])
column_comment = field['COLUMN_COMMENT']
info = ' | ' + column_name + ' | ' + column_type + ' | ' + column_default + ' | ' + column_comment + ' | '
dict_file.write('
' + info)
#
print(' %s ' % (table_name,))
dict_file.close()
cursor.close()
conn.close()
def deal_file(self, file_name):
""" """
#
if not os.path.exists(self.folder_name):
os.mkdir(self.folder_name)
#
if os.path.isfile(file_name):
os.unlink(file_name)
def test_conn(self, conn_info):
""" """
try:
#
pymysql.connect(conn_info[0], conn_info[1], conn_info[2], conn_info[3])
return True
except Exception:
return False
#
if __name__ == '__main__':
#
conn_info = input(' mysql ( : IP, , , ), , :192.168.0.1,root,root,test_db:')
conn_list = conn_info.split(',')
while conn_info == '' or len(conn_list) != 4:
conn_info = input(' mysql ( : IP, , , ), , :192.168.0.1,root,root,test_db:')
conn_list = conn_info.split(',')
#
dd_test = DataDict(conn_list)
db_conn = dd_test.test_conn(conn_list)
while db_conn == False:
conn_info = input(' mysql ( : IP, , , ), , :192.168.0.1,root,root,test_db:')
conn_list = conn_info.split(',')
if len(conn_list) != 4:
continue
dd_test = DataDict(conn_list)
db_conn = dd_test.test_conn(conn_list)
#
table_s = input(' ( :t_order), ( :t_order,t_goods), q:')
dd = DataDict(conn_list)
while table_s != 'q':
dd.run(table_s)
table_s = input(' ( t_order), ( t_order,t_goods), q):')
else:
print(' , ……')
time.sleep(1)
最後にここで、Python 3が自動的にMySQLデータ辞書を生成するmarkdownテキストの実現に関する記事を紹介します。これに関連して、Python 3が自動的にmarkdownテキストの内容を生成します。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。