うちの場合Windows10の入ったPCへMySQLがインストール済みなので、Pythonからどうやって接続するか調べてみました。
「mysql-connector-python」というライブラリをインストール、インポートして接続。あとはSQL文を発行すれば制御できました。
PythonでMySQL
ライブラリのインストール
まずはMySQL用ライブラリをインストールします。
Visual Studioの場合、「ツール>Python>Python環境」を実行。
「パッケージ」で「pip install mysql-connector-python」といれて実行します。
SQL文の発行
まずは「import mysql.connector」でライブラリをインポート。
「mysql.connector.connect」でユーザ名、パスワード、ホスト名、データベース名をセットします。
以下は、ユーザ名root、パスワード1111、ホスト名localhost、データベース名mydatabaseの場合です。
import mysql.connector
connector = mysql.connector.connect(user='root', password='1111', host='localhost', database='mydatabase')
次にデータを取得します。MySQLで使うSQL文を発行します。下の例では「select * from app_stock where id=1;」というSQLでapp_stockテーブルでidが1のものをピックアップします。
cursor = connector.cursor()
cursor.execute("select * from app_stock where id=1;")
あとは取得したデータrowの情報をprint文で表示して確認しましょう。
for row in cursor.fetchall():
print(row[0])
作業が終わったら、それぞれのオブジェクトを破棄します。
cursor.close
connector.close
工程としては以上ですので、あとはSQL文を変更したり、レコードを取得しての処理を書いていけばよいでしょう。
SQLでデータを更新
SQL文で「UPDATE ~ SET ~」を使えばデータを更新できます。
ただそれだけではなぜかエラーは起きないのにデータは変更できませんでした。
調べてみると、変更後に「commit」というコマンドを実行しないとデータが保存されないようです。
以下のようにUPDATE文を実行後に「commit」を実行したら、無事レコードは更新されていました。
cursor.execute('UPDATE app_stock SET tag="abakadabura" WHERE id=1;')
connector.commit()
エラーの確認
接続を確認する
「is_connected」関数でTrueになれば接続できています。
print(connector.is_connected())
原因を調べる
エラー原因を確認するには、以下のように「try~except」を使ってコネクターの「Error」を取得します。
試しに存在しないテーブル「no_db」を探すSQLを実行してみます。
try:
cursor.execute("select * from no_db where id=1;")
except mysql.connector.Error as e:
print("Error code:", e.errno)
print("Error message:", e.msg)
するとエラーコード「1146」エラーメッセージ「テーブル~doesn't exist(存在しない)」となりました。
エラーがすぐわかりますので、「try~except」を使って書いておくのがいいと思います。