PythonでMySQLデータベースへの挿入後にIDを取得する方法
MySQLのテーブルにデータを挿入するには、INSERT文を使用します。INSERT文でテーブルにデータを追加する際は、データベースのカラム定義と同じ順序で値を指定するか、あるいはカラム名を明示的に指定したうえでデータを渡す必要があります。
最後に挿入された行のIDを取得して表示するには、lastrowidを使用します。これは、直近に挿入された行のIDを取得するための特別な属性です。ただし、この機能を利用する前には、いくつかの前提条件を満たしている必要があります。
- IDカラムがテーブルの主キー(PRIMARY KEY)として設定されていること
- IDカラムが自動採番(AUTO_INCREMENT)になっていること
構文
cs.lastrowid
ここで「cs」はカーソルオブジェクトを指します。
PythonとMySQLで挿入行のIDを取得する手順
- MySQLコネクタをインポートする
- connect()メソッドでデータベースとの接続を確立する
- cursor()メソッドでカーソルオブジェクトを作成する
- テーブルへ行を挿入するINSERTクエリを作成する
- execute()メソッドでSQLクエリを実行する
- lastrowidを使って挿入された行のIDを取得する
- 接続を閉じる
例として、次のような「Students」テーブルが存在すると仮定します。
+--------+---------+-----------+------------+ | id | Name | City | Marks | +--------+---------+-----------+------------+ | 1 | Karan | Amritsar | 95 | | 2 | Sahil | Amritsar | 93 | | 3 | Kriti | Batala | 88 | | 4 | Amit | Delhi | 90 | +--------+---------+-----------+------------+
実装例
上記のテーブルでは、IDカラムが主キーかつ自動採番に設定されています。ここに新しい行を挿入し、最後に挿入された行のIDを取得してみましょう。
import mysql.connector
db = mysql.connector.connect(
host="your host",
user="your username",
password="your password",
database="database_name"
)
cursor = db.cursor()
# テーブルに新しい行を挿入
query = "INSERT INTO Students VALUES(5, 'Priya', 'Amritsar', 90)"
cursor.execute(query)
db.commit()
# 挿入された行のIDを表示
print(cursor.lastrowid)
db.close()出力結果
5
このように、cursorオブジェクトのlastrowid属性を参照するだけで、直前に挿入した行の自動採番IDを簡単に取得できます。新規レコード登録後に関連テーブルへの参照を保存したい場合などに非常に便利な機能です。
-
Pythonで都市の緯度・経度を取得する方法|geopyライブラリの使い方を解説
都市の緯度と経度を取得したい場合、Pythonではgeopyモジュールが便利です。geopyは、サードパーティ製のジオコーダやさまざまなデータソースを利用して、住所・都市・国などの座標情報を特定できるライブラリです。 まず、geopyモジュールがインストールされていることを確認しましょう。未インストールの場合は、以下のコマンドでインストールできます。 pip install geopy 以下の例では、Nominatimというジオコーダを使用して、都市「ハイデラバード(Hyderabad)」の緯度と経度を取得します。 手順 geopyモジュールからNominatimジオコーダをインポートします
-
PythonとMatplotlibで点群の中心座標を取得・可視化する方法
一連のポイント(点群)の中心を求めるには、リスト内のすべての要素を合計し、その合計値をリストの要素数(長さ)で割ります。この計算結果が、対応する各軸における中心座標となります。これはいわゆる「平均値」であり、点群の重心を表します。実装の手順データポイントとして x 座標と y 座標の2つのリストを作成します。plot() メソッドを使って、x および y のデータポイントをプロットします。x と y の各リストから、sum() と len() を組み合わせて中心座標のタプルを算出します。算出した中心点をグラフ上にプロットします。annotate() メソッドを使い、中心点に「center」とい