pymysql をオフラインでインストールして使用し、mysql データベースを操作する方法

1. 申請の背景

Python を使用して、企業内部ネットワーク上の mysql データベースを操作します。ただし、Python には MySQL データベースにアクセスするための関数ライブラリ pymysql が付属していないため、別途インストールする必要があります。インターネット上には、インターネット サポートを必要とする pymysql のインストールが多数あります。この記事では主に pymysql をオフラインでインストールする方法を説明し、pymysql が mysql 操作をどのように実行するかを簡単に紹介します。

pymysql は、Python DB-API 2.0 仕様に基づいて純粋な Python で書かれた MySQL データベース ドライバーです。Python 2.x バージョンだけでなく、Python 3.x バージョンもサポートしているため、使用する場合は、自分の Python バージョンに応じて適切な pymysql インストール パッケージを選択する必要があります。

2. 環境整備

1.pymysqlのバージョン。この記事で使用する Python のバージョンは Python 3.9 であるため、使用する pymysql のバージョンは 0.9.3 です。

2.anaconda3のバージョン。この記事のPython動作環境はanaconda 2.3.1、python3.9です。

3.IDE環境。この記事では、anaconda に付属する Python IDE ソフトウェア Spyder 5.2.2 を使用します。

4.mysqlのバージョン。MySQL バージョンは 5.7 で、wampserver 2.5 によって提供されます。mysql8.1 バージョンを使用したい場合は、記事「MySqlデータベース 5.7 から 8.1 へのアップグレードで遭遇した問題と解決策」_wamp upgrade mysql_hongdi のブログ - CSDN ブログを参照してください。

3. pmsqlのインストール

1. pmsql インストール パッケージをダウンロードします。

ダウンロード アドレス: https://mirrors.cloud.tencent.com/pypi/packages/da/15/23ba6592920e21cb40eb0fe0ea002d2b6177beb1ca8a4c1add5a8f32754d/PyMySQL-0.9.3.tar.gz#sha256=d8c059dcd81dedb85a9f03 4 d5e22dcb4442c0b201908bede99e306d65ea7c8e7

他のバージョンのダウンロード アドレスもここに記載されています。

PyMySQL-1.0.0.tar.gz icon-default.png?t=N7T8https://mirrors.cloud.tencent.com/pypi/packages/2b/c4/3c3e7e598b1b490a2525068c22f397fda13f48623b7bd54fb209cd0ab774/PyMySQL-1.0.0.tar.gz#sha256=b25 08a7dc6b626210e52f711d2c2361d102d8d9b8b144e63b2512e748de1a49b

PyMySQL-1.1.0.tar.gz icon-default.png?t=N7T8https://mirrors.cloud.tencent.com/pypi/packages/41/9d/ee68dee1c8821c839bb31e6e5f40e61035a5278f7c1307dde758f0c90452/PyMySQL-1.1.0.tar.gz#sha256=4f1 3a7df8bf36a51e81dd9f3605fede45a4878fe02f9236349fd82a3f0612f96

 2.pyMySQLをインストールする

(1) pYSql-0.9.3.tar.gz を anaconda インストール ディレクトリに解凍します (E:\Anaconda3 であると仮定します)。

(2) cmd コマンド ライン インターフェイスを開き、E:\Anaconda3 に切り替えて、コマンド python setup.py install を入力します。

(3) インストールが成功したかどうかをテストします。コマンド ラインで Python インタープリターを入力し、コマンド >>>import pymysql を入力して Enter を押します。エラーが報告されなければ、pymsql は正常にインストールされていると考えられます。

4. pymysql 開発の概要

(1) pymysqlのコーディング手順

 1. データベース接続を確立します。 db = pymysql.connect (パラメータ)
        connect() 関数のパラメータ: host = ホスト アドレスまたはローカルホスト、port = ポート番号 (デフォルト 3306)、
                                             user = ユーザー名、password = パスワード、

                                             Database=database、charset=encoding メソッド (デフォルトは utf8)
  2. カーソル オブジェクトを作成します。 cur = db.cursor()
  3. カーソル メソッド cur.execute("sql state") を実行します。
  4. データベースに送信します。 db.commit( )  
  5.カーソルオブジェクトを閉じる cur.close()
  6.データベース接続を閉じる db.close()

(2) pymysqlでのクエリ

pymysql の追加、削除、変更は比較的簡単で、対応する挿入、削除、更新ステートメントを cur.execute に入れて実行するだけです。pymysql にはチェック用に、fetchone、fetchall、fetchmany といういくつかのメソッドが用意されています。これらについては以下で紹介します。

1.fetchoneメソッド

単一のレコード、つまりタプルを返します。データがない場合は、None を返します。次に例を示します。

cur.execute("id=1 の mytable から、col1、col2 を選択");

arr=cur.fetchone()

#col1とcol2の値はarr[0]とarr[1]を通じてアクセスできます

print(arr[0],arr[1])

注: ループ内でcursor.fetchone()を複数回使用して、結果が空になるまで次の結果を取得します。

2.fetchallメソッド

 複数のレコード、つまり複数のタプルを返します。結果がない場合はreturn()します。コードは次のとおりです。

cur.execute("mytableからcol1、col2を選択します ");

arrs = cur.fetchall()
for row in arrs:
    print(row)

3.fetchmany(n) メソッド

データの最初の n 行を取得するコードは次のとおりです。

cur.execute("mytableからcol1、col2を選択します ");

arr3 = cur.fetchmany(3) はデータの最初の 3 行を取得します

(3) pymysqlでのプレースホルダの使用

開発プロセスでは、SQL ステートメントにパラメーターを渡すことがよく必要になります。最も簡単な方法は文字列を結合することですが、この方法は SQL インジェクション攻撃を受けやすいです。そのため、開発する際はパラメータを渡して開発することを推奨します。ここでは主にいくつかの方法を紹介します。

mytable テーブルにレコードを追加する必要があるとします。

通常の SQL ステートメント: sql = "mytable (col1,col2) 値に挿入 ('user1',19),('user2',20);"

1. プレースホルダーメソッド:

sql = “mytable (col1,col2) に値 ('%s',%f),('%s',%f); を挿入します。

SQL ステートメントの形式との完全な一致を維持するには、次のステートメントを記述する必要があります。

sql = “mytable (col1,col2) の値 ('%s',%f),('%s',%f);”%('user1',19,'user2',20) に挿入

注: この方法では、文字列プレースホルダーに一重引用符「%s」を追加する必要があります。

2.パラメータの受け渡し方法:

sql = “mytable (col1,col2) に値 ('%s',%f),('%s',%f); を挿入します。

次のように、execute メソッドで SQL を渡すことに加えて、対応するパラメータ リストも渡す必要があります。

cur.execute(sql,['user1',19,'user2',20])
注: ここの 2 番目のパラメーターは、リスト内の値に従って順番に照合されます。

(4) 完全なソースコード例

import pymysql

db = pymysql.connect(host='localhost',
                     port=3306,
                     user='user',
                     password='pwd',
                     database='mydatabase',
                     charset='utf8')
cur = db.cursor()
sql = "INSERT INTO interest (col1,col2) VALUES ('%s',%f),('%s',%f);"
try:
    cur.execute(sql, ['user1',19,'user2',20])
    db.commit()
except Exception as e:
    db.rollback()
finally:
    cur.close()
    db.close()


 

おすすめ

転載: blog.csdn.net/hongdi/article/details/133300253