sql >> データベース >  >> RDS >> Mysql

Pythonを使用したMySQLへの接続

    この記事では、Pythonを使用してMySQLに接続する方法について説明します。 Pythonは、今日使用されている最も生産的で広く使用されているプログラミング言語の1つです。そのシンプルでエレガントな構文は、新しいプログラマーにとって理想的ですが、経験豊富なプログラマーは、利用可能なモジュールと機能の広範なリストを楽しんでいます。

    MySQLは、多くのソフトウェアプログラムやWebサーバーで使用されている、堅牢なオープンソースのSQLベースのリレーショナルデータベース管理システムです。この記事は、Pythonを使用してMySQLに接続し、いくつかの基本的なタスクを実行するために接続する方法を示すことを目的としています。

    Pythonを使用してMySQLに接続する理由

    あなたは自分自身に問いかけているかもしれません、なぜこの情報が重要なのですか?最良の答えは、これら2つのコンポーネントが互いに見事に補完し合うことです。ソース情報を使用してデータを操作するPythonの機能は他に類を見ません。 MySQLまたはMariaDBには、Pythonで操作できるデータが含まれています。これらの2つの要素を使用して相互に強化および補完することは、それらの間の全体的な相乗効果を高めるだけです。

    ステップ1.コネクタモジュールのインストール

    コネクタモジュールをインストールすることから始めましょう。 MySQLをPythonに接続する最初のステップは、PipPythonモジュールをインストールすることです。 pipをまだインストールしていない場合は、複数のオペレーティングシステムにpipをインストールするための詳細な手順は、LiquidWebナレッジベースにあります。 pipをインストールしたら、 mysql-connector-pythonをインストールする必要があります。 次のコマンドを使用するドライバー。

    root@host:~# pip install mysql-connector-python 
    Collecting mysql-connector-python
      Downloading mysql_connector_python-8.0.21-cp27-cp27mu-manylinux1_x86_64.whl (16.0 MB)
         |################################| 16.0 MB 13.7 MB/s 
    Collecting protobuf>=3.0.0
      Downloading protobuf-3.12.2-cp27-cp27mu-manylinux1_x86_64.whl (1.3 MB)
         |################################| 1.3 MB 17.0 MB/s 
    Requirement already satisfied: setuptools in /usr/local/lib/python2.7/dist-packages (from protobuf>=3.0.0->mysql-connector-python) (44.1.1)
    Collecting six>=1.9
      Downloading six-1.15.0-py2.py3-none-any.whl (10 kB)
    Installing collected packages: six, protobuf, mysql-connector-python
    Successfully installed mysql-connector-python-8.0.21 protobuf-3.12.2 six-1.15.0

    上記の例では、pipはmysql-connector-pythonドライバーが必要とする可能性のある他のモジュールをチェックし、必要に応じてインストールされます。

    ステップ2.コネクタのインポート

    次のステップは、 mysql-connector-pythonをインポートすることです。 コード内でこのコマンドを使用するモジュール。

    import mysql.connector

    このコマンドは、MySQLコネクタモジュールに関連し、MySQLコネクタモジュールによって使用されるすべての関数とオブジェクトをロードして有効にするようにPythonに指示します。

    ステップ3.MySQLをサーバーに接続します

    次のステップは、 mysql.connector.connect()を呼び出すことです。 サーバーへの接続を作成するメソッド。

    import mysql.connector
    
    db = mysql.connector.connect(
    	host='localhost',
    	user=’username’,
    	password=’password’
    )

    通常、MySQLデータベースと通信するときは、 MySQLcursorを使用します オブジェクト(mysql-connector-pythonモジュールの一部です)。このオブジェクトは、サーバーとの対話に使用されるSQLクエリを入力できる一種のCLI(コマンドラインインターフェイス)と考えてください。この通信は、カーソルメソッド( cursor =db.cursor())を使用して実行されます。 )、connectメソッドを使用して最後のステップで作成したdbオブジェクトを呼び出します:

    import mysql.connector
    
    db = mysql.connector.connect(
            host='localhost',
            user=’username’,
            password=’password’'
    )
    
    cursor = db.cursor()

    db.cursorオブジェクトを使用すると、SQLクエリを実行できます。このクエリは、forループで反復できるオブジェクトを返します。 そのように。

    import mysql.connector
    
    db = mysql.connector.connect(
            host='localhost',
            user=’username’,
            password=’password’'
    )
    
    cursor = db.cursor()
    
    cursor.execute("show databases")
    
    for x in cursor:
    	print(x)

    SQLビューに関する以前のKBチュートリアルで設定された既存のデータベースがあります。架空のストックカーシリーズに関する情報が含まれています。上記のスクリプトを使用すると、結果は次のようになります。

    # python mysql-test.py 
    (u'information_schema',)
    (u'races',)
    (u'sys',)

    現在のカーソルで他のコマンドを使用できます( db.cursor() )このデータベースと対話します。ここでは、同じデータベースからテーブルとビューのリストを取得します。

    import mysql.connector
    
    db = mysql.connector.connect(
            host='localhost',
            user=’username’,
            password='password'
    )
    
    cursor = db.cursor()
    
    
    cursor.execute("use races")
    cursor.execute("show tables")
    for x in cursor:
            print(x)
    
    
    The output results look like this.
    
    # python mysql-test.py 
    (u'all_finishes',)
    (u'drivers',)
    (u'finishes',)
    (u'race_winners',)
    (u'races',)
    (u'standings_leader',)
    (u'tracks',)
    注:結果の前の「u」は、それがUnicode文字列であることを示します。

    MySQLカーソルオブジェクトを使用したデータの挿入

    データベースの構造を取得できるようになったので、カーソルオブジェクトを使用して他のコマンドを実行できます。レースシーズンのドライバーがデータベースに挿入されたセクションがありました。これは、このSQLクエリを使用して行われました。

    insert into drivers (name,car_number) values
      ('Buddy Baker',28),
      ('Dale Earnhardt Jr.',8),
      ('Ricky Rudd',88);

    Pythonを使用してこれと同じSQLクエリを実行するには、この文字列をカーソルのexecuteメソッドに渡すだけです。 。これを使用して練習する良い方法は、クエリのテキストとして変数を割り当ててから、カーソルオブジェクトに対してexecuteを呼び出すことです。また、そのようにdb.commit()を呼び出して、変更をコミットするようにmysqlに指示する必要があります。

    db = mysql.connector.connect(
    	host='localhost',
    	user=’username’,
    	password='password'
    )
    
    cursor = db.cursor()
    cursor.execute("use races")
    
    
    query = "insert into drivers (name,car_number) values ('Buddy Baker',28),('Dale Earnhardt Jr.',8),('Ricky Rudd',88);"
    
    cursor.execute(query)
    
    db.commit()

    結果:

    id 名前

    車番号

    1 バディベイカー

    28

    2

    デイルアーンハートジュニア

    8
    3

    リッキー・ラッド

    88

    複数の行を挿入する場合、インターフェースは「executemany」メソッドを提供します 、挿入する値の配列と、配列の値を%s記号で置き換えて特別にフォーマットされた文字列を作成できます。この例は、前の挿入と同じです:

    db = mysql.connector.connect(
    	host='localhost',
    	user=’username’,
    	password='password'
    )
    
    cursor = db.cursor()
    cursor.execute("use races")
    
    
    query = "insert into drivers (name,car_number) values ('Buddy Baker',28),('Dale Earnhardt Jr.',8),('Ricky Rudd',88);"
    
    cursor.execute(query)
    
    db.commit()

    配列「drivers」の値は、「sql」ステートメントに1つずつ渡されてから、「 executemany()」に渡されます。 ’

    選択の使用

    他のSQLステートメントと同様に、カーソルオブジェクトを使用してselectを実行できます。選択後、カーソルは fetchall()を含むいくつかの新しいメソッドを取得します およびfetchone() 。 fetchall()は、すべての結果のリストを返します。各結果は、選択された順序で対応する列を含むリストです。fetchone()メソッドは、結果セットから次の結果を返します。

    sql = "select name,car_number from drivers"
    
    cursor.execute(sql)
    
    results = cursor.fetchall()
    
    for x in results:
            print(x)

    結果:

    (u'Buddy Baker', 28)
    (u'Dale Earnhardt Jr.', 8)
    (u'Ricky Rudd', 88)

    一度に1つの結果が必要な場合は、 fetchone()を使用できます。

    sql = "select name,car_number from drivers"
    
    cursor.execute(sql)
    
    results = cursor.fetchone()
    
    print(results)

    結果:

    (u'Buddy Baker', 28)

    データの更新と削除

    挿入コマンドと同様に、削除コマンドと更新コマンドはカーソルオブジェクトを使用し、db.commit()を呼び出す必要があります。それ以外は、他のSQLコマンドと同様です。

    更新

    sql = "update drivers set car_number = 1 where car_number = 88"
    cursor.execute(sql)
    db.commit()
    
    sql = "select name,car_number from drivers"
    
    cursor.execute(sql)
    
    results = cursor.fetchall()
    for x in results:
            print(x)
    
    (u'Buddy Baker', 28)
    (u'Dale Earnhardt Jr.', 8)
    (u'Ricky Rudd', 1)

    削除

    sql = "delete from drivers where car_number = 8"
    cursor.execute(sql)
    db.commit()
    
    sql = "select name,car_number from drivers"
    
    cursor.execute(sql)
    
    results = cursor.fetchall()
    for x in results:
            print(x)
    
    (u'Buddy Baker', 28)
    (u'Ricky Rudd', 1)

    結論

    それで、この記事の要点は何ですか? Pythonを使用してMySQLと対話することは、各システムを補完する方法でデータを操作するためのシンプルで効果的な方法です。

    質問がありますか?私たちは、Hosting™で最も役立つ人間であることに誇りを持っています!当社のテクニカルサポートスタッフは、この記事に関連する問題を24時間年中無休でいつでもサポートします。

    私たちは、support @ liquidweb.comのチケットシステム、電話(800-580-4986)、またはLiveChatまたは任意の方法で利用できます。私たちはあなたがリラックスできるように一生懸命働いています。


    1. CentOS7にMariaDB10をインストールして保護する方法

    2. SQL SELECT speed int vs varchar

    3. BCPユーティリティを使用してデータをフラットファイルにエクスポートし、一括挿入を使用してデータをインポートする方法

    4. vagrantvirtualboxマシンからホストPostgreSQLに接続する方法