Pythonは、MySQLデータベースに接続してデータを処理するためのいくつかの方法を提供します。この記事では、3つの方法について説明します。
次のいずれかの方法を使用する前に、MySQLデータベースとユーザーがすでに存在している必要があります。 cPanelを使用してMySQLデータベースを管理する方法については、この記事を参照してください。Pythonを使用したMySQLへの接続
Pythonを使用してMySQLデータベースにアクセスする前に、次のパッケージの1つ(または複数)を仮想環境にインストールする必要があります。
- mysqlclient :このパッケージには MySQLdbが含まれています モジュール。これはCで記述されており、MySQLで最も一般的に使用されているPythonパッケージの1つです。
- mysql-connector-python :このパッケージには mysql.connectorが含まれています モジュール。完全にPythonで書かれています。
- PyMySQL :このパッケージには pymysqlが含まれています モジュール。完全にPythonで書かれています。
これら3つのパッケージはすべて、PythonのポータブルSQLデータベースAPIを使用しています。つまり、あるモジュールから別のモジュールに切り替えると、既存のコードのほとんどすべてを再利用できます(以下のコードサンプルはこれを行う方法を示しています)。
Python仮想環境のセットアップとMySQLパッケージのインストール
Python仮想環境をセットアップしてMySQLパッケージをインストールするには、次の手順に従います。
- SSHを使用してアカウントにログインします。
- 仮想環境を作成するには、次のコマンドを入力します。
cd ~ virtualenv sqlenv
- virtualenv コマンドは、 sqlenvという名前の仮想環境を作成します 、およびこの手順の後続のコマンドは、環境の名前が sqlenvであることを前提としています。 。任意の環境名を使用できますが、 sqlenvのすべての出現箇所を必ず置き換えてください。 独自の環境名を使用します。
- 代替のPythonバージョンを実行している場合(たとえば、この記事で説明されているように、アカウントに新しいPythonバージョンを手動で構成した場合)、仮想環境にそのバージョンを指定できます。たとえば、ユーザー設定バージョンのPython 3.8を仮想環境にインストールするには、次のコマンドを使用できます。
virtualenv -p /home/username/bin/python3.8 sqlenv
-
仮想環境をアクティブ化するには、次のコマンドを入力します。
source sqlenv/bin/activate
コマンドプロンプトが(sqlenv)で始まるようになりました Python仮想環境で作業していることを示します。この手順の以下のすべてのコマンドは、仮想環境内で作業していることを前提としています。 SSHセッションからログアウトした場合(または非アクティブ化を使用して仮想環境を非アクティブ化した場合) コマンド)、以下の手順に従ってサンプルコードを実行する前に、必ず仮想環境を再アクティブ化してください。 -
pipを更新するには 仮想環境で、次のコマンドを入力します。
pip install -U pip
-
インストールするパッケージのコマンドを入力します。
- mysqlclientをインストールするには パッケージに、次のコマンドを入力します:
pip install mysqlclient
-
mysql-connector-pythonをインストールするには パッケージに、次のコマンドを入力します。
pip install mysql-connector-python
-
pymysqlをインストールするには パッケージに、次のコマンドを入力します。
pip install pymysql
- mysqlclientをインストールするには パッケージに、次のコマンドを入力します:
MySQLパッケージを仮想環境にインストールすると、実際のデータベースを操作する準備が整います。次のサンプルPythonコードは、これを行う方法と、さまざまなSQLパッケージの実装を切り替えるのがいかに簡単かを示しています。サンプルコードはPython2.7およびPython3.xで動作します。
独自のコードで、 usernameを置き換えます MySQLデータベースのユーザー名、パスワード データベースユーザーのパスワードとdbname データベース名:
#!/usr/bin/python from __future__ import print_function hostname = 'localhost' username = 'username' password = 'password' database = 'dbname' # Simple routine to run a query on a database and print the results: def doQuery( conn ) : cur = conn.cursor() cur.execute( "SELECT fname, lname FROM employee" ) for firstname, lastname in cur.fetchall() : print( firstname, lastname ) print( "Using mysqlclient (MySQLdb):" ) import MySQLdb myConnection = MySQLdb.connect( host=hostname, user=username, passwd=password, db=database ) doQuery( myConnection ) myConnection.close() print( "Using mysql.connector:" ) import mysql.connector myConnection = mysql.connector.connect( host=hostname, user=username, passwd=password, db=database ) doQuery( myConnection ) myConnection.close() print( "Using pymysql:" ) import pymysql myConnection = pymysql.connect( host=hostname, user=username, passwd=password, db=database ) doQuery( myConnection ) myConnection.close()
この例では、一連の接続を作成します 異なるMySQLモジュールを使用して同じデータベースを開くオブジェクト。 3つのMySQLモジュールはすべてポータブルSQLデータベースAPIインターフェースを使用しているため、 doQuery()のコードを使用できます。 変更なしで機能します。
接続がある場合 データベースに関連付けられたオブジェクトの場合、カーソルを作成できます 物体。 カーソル オブジェクトを使用すると、 execute()を実行できます メソッド。これにより、生のSQLステートメント(この場合は SELECT )を実行できます。 employeeという名前のテーブルに対するクエリ 。
ご覧のとおり、PythonのポータブルSQLデータベースAPIを使用すると、コード内のMySQLモジュールを非常に簡単に切り替えることができます。上記のサンプルでは、別のモジュールを使用するために必要なコード変更は、インポートのみです。 および接続 ステートメント。- PythonのポータブルSQLデータベースAPIの詳細については、https://www.python.org/dev/peps/pep-0249にアクセスしてください。
- mysqlclientの詳細については パッケージについては、https://pypi.org/project/mysqlclientにアクセスしてください。
- mysql-connector-pythonの詳細については パッケージについては、https://pypi.python.org/pypi/mysql-connector-pythonにアクセスしてください。
- PyMySQLの詳細については パッケージについては、https://pypi.python.org/pypi/PyMySQLにアクセスしてください。