投稿

ラベル(Compose)が付いた投稿を表示しています

【計算列追加】PythonでMySQLテーブルに計算結果の列を追加する方法【Docker & Jupyterlab環境】

イメージ
はじめに 全国地方公共団体コード 、というものがある。 総務省が提供している。 元来、 都道府県コード (2桁数字)と 市区町村コード (3桁数字)があり、JIS X 0401とJIS X 0402として制定されてもいる。 全国地方公共団体コードは この2つのコードを合わせた、5桁の数字 である。 しかし、総務省提供の全国地方公共団体コードでは、なぜか 6桁 である。 他の、例えば郵便番号コードでは、全国地方公共団体コードが5桁であるのに、である。 実は、6桁の全国地方公共団体コードは、5桁に付随して 下1桁に検査数字(チェックデジット)が付加 されているのである。 今回は、全国地方公共団体コードの桁数を5桁に合わせるために、 6桁の全国地方公共団体コードを5桁にし、新たな項目を作成してそこに5桁コードを記述する方法 を紹介する。 コードの解説 import mysql.connector db=mysql.connector.connect(host="host.docker.internal", user="root", password="root") cursor = db.cursor() # データベースを選択 cursor.execute("USE default_db;") db.commit() cursor.execute("ALTER TABLE JLGcode_table ADD JLGcode_5 INT(5) UNSIGNED ZEROFILL GENERATED ALWAYS AS (SUBSTRING(全国地方公共団体コード, 1, 5)) STORED;") db.commit() 1行目〜7行目 は、をご覧あれ。 8行目 : commit() は 「トランザクションをコミットして、その変更を永続的なものに」する処理を行う 。大抵は execute()の直後に置いてexecute()で実行した司令を完了させる 。詳細は 参考サイト へ。→ 【2022.2.17追記】commit()の必要な時、不要な時 も見よ。も見よ。 【2022.2.17追記】commit()の必要な時、不要な時|【まとめ】Pyth...

【id列追加】PythonでMySQLテーブルにid列を追加する方法【Docker & Jupyterlab環境】

イメージ
はじめに PythonでMySQLにCSVファイルをインポートする【Docker & Jupyterlab環境】 郵便番号データをMySQLに追加する操作をPythonでしてみようと思い立ち実践するも様々なエラーに出くわしつつも無事インポートできるまでを報告。これをDocker & Jupyterlab環境で行った。 blog.eszett-design.com 上記エントリにて PythonでMySQLにCSVファイルをインポートする方法 を書いたが、ここでは、 データベースにデータをインポートした後に 新規列を追加する方法 を模索した結果を詳述する。 上記エントリでMySQLにインポートした日本郵政の 郵便番号データ(CSV形式)には、 そもそも id列が無い 。 つまりは、 主キー制約のないデータ なのである。 将来的には このデータをリレーショナルデータベースの一部に使えたら と考えているので、その際 主キー制約の列が必要 になる。 郵便番号データインポート時、「ユニークなカラムが含まれていません」の注意書きが ならば、MySQLにインポートする前に、 Excelでデータを開いてid列を追加したら 、と思われるかもしれない。 しかし、元データをいじる、ということは、 思わぬデータの改変やエラー発生の可能性がある ので避けたい。 また、郵便番号データの インポート後にphpMyAdminでid列を追加できる が、 id番号がランダムに付与されて気持ち悪い 状態になる。 そして、新規テーブル作成時に先に id列も作成するコードにする と、 作成される列数と郵便番号データの列数が合わず 、 インポート時に正しくない列にインポート されてしまう。 ということで、Python(のモジュール・ライブラリ)やphpでのid列の追加方法を模索した結果、 MySQLの構文であっさり解決 した。 餅屋は餅屋 、だった。 コードの解説 import mysql.connector db=mysql.connector.connect(host="host.docker.internal", user="root", password="root") cursor = db....

【完成版】PythonでMySQLにCSVファイルをインポートする【Docker & Jupyterlab環境】

イメージ
はじめに 今回は、 郵便番号データをMySQLに追加 する操作をPythonでしてみようと思う。 いきなり 10万件超 のデータを処理してみる。 Docker Compose と Dockerfile の解説は、 別ブログ で解説する。 PythonとMySQLのコマンド 解説も、 各項目ごとの別ブログ で解説する。 簡単な説明は、 コマンド内 にコメントする。 必要なもの 目次の項目中、【必要】【ファイル】【フォルダ】【コマンド】を揃えることになる。 開発環境 Python、MySQL、phpMyAdminは、Docker内に環境を整備し、Jupyterlabで操作していく。 マシン: MacBook Pro OS: macOS Big Sur (11.6.3) 仮想環境: Docker Desktop (4.4.2 (73305)) エディタ: JupyterLab (3.2.9)、 Sublime Text (Build 4126) python :3.8.10 MySQL :8.0.28 phpMyAdmin :5.1.3(TerminalでMySQLを確認するより楽なので導入) 【必要】Docker Desktopをインストール Docker Desktopをインストールしていない 場合は、 下記ブログの1と2 を参考にしていただければ。 MacにDockerをインストールしPythonが使えるまでのまとめ【初心者向け】 初心者がDockerをインストールするのはハードルが高いですよね。初心者である筆者がDockerのインストール方法を調べて試してみたのでその手順を公開します。用語については、理解しないままとりあえず放置します。理解しようと用語を調べだしたらそれに時間を取られてインストールに進めないので。 blog.eszett-design.com 【ファイル】MySQLのDockerの構築と階層構造 以下のブログをご覧あれ。 php と、 MySQL と、 phpMyAdmin の各々のContainerを構築する。 phpMyAdmin を導入すると、 MySQL の確認が楽 である。 【完成版】DockerにPHP+Apache+MySQL開発環境を設定して...