Python の fetchall()

Rana Hasnain Khan 2023年10月10日
Python の fetchall()

Python のカーソルクラスメソッド fetchall() と、それをアプリケーションで使用して Python のデータベースからデータを取得する方法を示します。

Python で fetchall() を使用してデータベースからデータを取得する

ほとんどの場合、アプリケーションでデータベースを使用します。データベースは、データを保存するアプリケーションの最も重要な部分です。

Python は、カーソルを使用してデータベースからデータを取得します。fetchall() は、特定のクエリのすべての行を取得するために使用される Python のカーソルメソッドの 1つです。

特定のテーブルのすべてのデータを表示する場合は、fetchall() メソッドを使用してすべての行をフェッチできます。このメソッドは、タプルのリストを返します。

クエリに行がない場合は、空のリストが返されます。例を見て、サンプルテーブルを作成し、Python のカーソルメソッドを使用してデータをフェッチしてみましょう。

この例では、MySQL データベースを使用するため、mysql-connector-python モジュールをインストールする必要があります。ただし、PostgreSQL などの他のデータベースを使用する場合は、Psycopg2 を使用する必要があります。SQLite を使用する場合は、sqlite3 を使用する必要があります。

したがって、次のコマンドを実行して mysql-connector-python をインストールします。

pip install mysql-connector-python

MySQL 内に新しいサンプルデータベースとテーブルを作成しましょう。

Python データベース名の fetchall

テーブル構造は以下のようになります。

Python データベースのスクリーンショットの fetchall

Python テーブル構造の fetchall

次に、以下に示すように、デモデータをその中に追加しましょう。

Python テーブルデータの fetchall

以下に示すように、mysql-connector-python をインポートし、Python の関数内にデータベース接続を作成します。

# python
import mysql.connector


def getRecords():
    try:
        mydb = mysql.connector.connect(
            host="localhost",
            user="yourusername",
            password="yourpassword"
        )
        mycursor = mydb.cursor()
        print("Connected to MySQL")

テーブルからデータを取得するための select クエリを作成します。

# python
query = "SELECT * FROM test"
mydb.commit()
records = mycursor.fetchall()
print("Total rows are:  ", len(records))
print("Printing each row")
for row in records:
    print("ID: ", row[0])
    print("Name: ", row[1])
    print("Email: ", row[2])
    print("Country: ", row[3])
    print("\n")
mycursor.close()

そして最後に、関数を呼び出します。

# python
getRecords()

出力:

Python の例の結果の fetchall

上記の結果は、fetchall() メソッドを使用すると、クエリからすべての行を簡単にフェッチできることを示しています。

Rana Hasnain Khan avatar Rana Hasnain Khan avatar

Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.

LinkedIn

関連記事 - Python MySQL