Python で pymysql モジュールを使用して MySQL データベースに接続する

Python で pymysql モジュールを使用して MySQL データベースに接続する

pymysqlをインストールする

pip install pymysql

2|0pymysqlの使用

2|1データクエリステートメントを使用する

データのクエリ fetchone()

pymysql からのインポート *

conn = 接続(
  ホスト='127.0.0.1',
  ポート=3306、ユーザー='root'、
  パスワード='123456',
  データベース='itcast',
  文字セット='utf8')

# カーソルを作成する c = conn.cursor()
# SQL ステートメントを実行します c.execute("select * from student")
# データ行をクエリする result = c.fetchone()
印刷(結果)
# カーソルを閉じる c.close()
# データベース接続を閉じる conn.close()
「」
(1, '张三', 18, b'\x01')
「」

複数のデータをクエリする fetchall()

pymysql からのインポート *

conn = 接続(
  ホスト='127.0.0.1',
  ポート=3306、ユーザー='root'、
  パスワード='123456',
  データベース='itcast',
  文字セット='utf8')

# カーソルを作成する c = conn.cursor()
# SQL ステートメントを実行します c.execute("select * from student")
# 複数行のデータをクエリする result = c.fetchall()
結果の項目:
  印刷(アイテム)
# カーソルを閉じる c.close()
# データベース接続を閉じる conn.close()
「」
(1, '张三', 18, b'\x01')
(2、「李斯」、19、b'\x00')
(3, '王五', 20, b'\x01')
「」

カーソルのデフォルト設定を変更します。戻り値は辞書です

pymysql からのインポート *

conn = 接続(
  ホスト='127.0.0.1',
  ポート=3306、ユーザー='root'、
  パスワード='123456',
  データベース='itcast',
  文字セット='utf8')

# カーソルを作成し、操作を辞書型に設定します c = conn.cursor(cursors.DictCursor)
# SQL ステートメントを実行します c.execute("select * from student")
# 複数行のデータをクエリする result = c.fetchall()
結果の項目:
  印刷(アイテム)
# カーソルを閉じる c.close()
# データベース接続を閉じる conn.close()
「」
{'id': 1, 'name': '张三', 'age': 18, 'sex': b'\x01'}
{'id': 2、'name': 'Li Si'、'age': 19、'sex': b'\x00'}
{'id': 3, 'name': '王五', 'age': 20, 'sex': b'\x01'}
「」

データを返す場合も同様です。必要に応じて辞書またはタプルを返します。

2|2データ操作ステートメントの使用

追加、削除、更新ステートメントを実行する操作は実際には同じです。デモとして1つだけ書いてみます。

pymysql からのインポート *

conn = 接続(
  ホスト='127.0.0.1',
  ポート=3306、ユーザー='root'、
  パスワード='123456',
  データベース='itcast',
  文字セット='utf8')

# カーソルを作成する c = conn.cursor()
# SQL ステートメントを実行します c.execute("insert into student(name,age,sex) values ​​(%s,%s,%s)",("小二",28,1))
# トランザクションをコミットする conn.commit()
# カーソルを閉じる c.close()
# データベース接続を閉じる conn.close()

クエリ ステートメントとは異なり、トランザクションは commit() を使用してコミットする必要があります。そうしないと、操作は無効になります。

3|0データベース接続クラスの記述

通常版

pysql ヘルプ

pymysqlから接続をインポートし、カーソル

クラスMysqlHelper:
  デフ__init__(self,
         ホスト="127.0.0.1",
         ユーザー="root",
         パスワード="123456",
         データベース="itcast",
         文字セット='utf8'、
         ポート=3306):
    self.host = ホスト
    self.port = ポート
    self.user = ユーザー
    self.password = パスワード
    self.database = データベース
    self.charset = 文字セット
    self._conn = なし
    self._cursor = なし

  def _open(self):
    # print("接続が開かれました")
    self._conn = connect(host=self.host,
               ポート=自己.ポート、
               ユーザー=自己.ユーザー、
               パスワード=自分自身のパスワード、
               データベース=self.database、
               文字セット = self.charset)
    self._cursor = self._conn.cursor(cursors.DictCursor)

  def _close(self):
    # print("接続が閉じられました")
    自己._cursor.close()
    自己._conn.close()

  def one(self, sql, params=None):
    結果: タプル = None
    試す:
      自己._open()
      self._cursor.execute(sql、パラメータ)
      結果 = self._cursor.fetchone()
    except 例外を e として:
      印刷する
    ついに:
      自己._close()
    結果を返す

  すべて定義します(self、sql、params=None):
    結果: タプル = None
    試す:
      自己._open()
      self._cursor.execute(sql、パラメータ)
      結果 = self._cursor.fetchall()
    except 例外を e として:
      印刷する
    ついに:
      自己._close()
    結果を返す

  def exe(self, sql, params=なし):
    試す:
      自己._open()
      self._cursor.execute(sql、パラメータ)
      自己._conn.コミット()
    except 例外を e として:
      印刷する
    ついに:
      自己._close()

このクラスは、fetchone、fetchall、および execute をカプセル化し、データベース接続とカーソルを開いたり閉じたりする必要性を排除します。
次のコードは、このクラスを呼び出す小さな例です。

MysqlHelper からインポート *

mysqlhelper = MysqlHelper()
ret = mysqlhelper.all("学生から*を選択")
ret内のアイテムの場合:
  印刷(アイテム)
「」
{'id': 1, 'name': '张三', 'age': 18, 'sex': b'\x01'}
{'id': 2、'name': 'Li Si'、'age': 19、'sex': b'\x00'}
{'id': 3, 'name': '王五', 'age': 20, 'sex': b'\x01'}
{'id': 5, 'name': '小等', 'age': 28, 'sex': b'\x01'}
{'id': 6, 'name': 'わはは', 'age': 28, 'sex': b'\x01'}
{'id': 7, 'name': 'ワハハ', 'age': 28, 'sex': b'\x01'}
「」
mysql_with.py のコンテキスト マネージャー バージョン

pymysqlから接続、カーソルをインポート

クラスDB:
  デフ__init__(self,
         ホスト='localhost',
         ポート=3306、
         db='itcast',
         ユーザー='root'、
         パスワード='123456',
         文字セット='utf8'):
    # 接続を確立する self.conn = connect(
      ホスト=ホスト、
      ポート=ポート、
      デシベル=デシベル、
      ユーザー=ユーザー、
      パスワード=パスワード、
      charset=文字セット)
    # カーソルを作成し、操作を辞書型に設定します。self.cur = self.conn.cursor(cursor=cursors.DictCursor)

  def __enter__(self):
    # カーソルを返す return self.cur

  def __exit__(self、exc_type、exc_val、exc_tb):
    # データベースをコミットし、self.conn.commit() を実行します。
    # カーソルを閉じる self.cur.close()
    # データベース接続を閉じる self.conn.close()

使い方:

mysql_withからDBをインポート

DB() を db として使用:
  db.execute("学生から*を選択")
  ret = db.fetchone()
  印刷(ret)

「」
{'id': 1, 'name': '张三', 'age': 18, 'sex': b'\x01'}
「」

要約する

上記は、pymysql モジュールを使用して Python で MySQL データベースに接続する方法の紹介です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。

以下もご興味があるかもしれません:
  • PythonモジュールはRedisデータベースの接続と使用について説明します
  • Pythonはsqlite3モジュールの組み込みデータベースを使用します
  • Pythonはpymysqlモジュールを使用してデータベースを操作する方法を解析します
  • Python は sqlalchemy モジュールを使用してデータベース操作例に接続します
  • Python の Pymssql モジュールに基づいて SQL Server データベースに接続する方法の詳細な説明
  • Python でデータベース モジュールを作成するチュートリアル
  • Python MySQLdbモジュールは、mysqlデータベースインスタンスを操作するために接続します。
  • Berkeley DB データベースを操作する Python bsddb モジュールの紹介
  • Pythonでよく使われる各種データベース操作モジュールと接続例
  • データベースに遭遇したときに非常に便利なPythonモジュールを共有します

<<:  K8S クラスターを構築し、Hyper-V で Docker をインストールする方法

>>:  vue router-view のネストされた表示実装

推薦する

MySQL 8.0 でリモートアクセス権限を設定する方法

前回の記事では、MySQL パスワードをリセットする方法を説明しました。一部の学生から、データベース...

HTMLは実際にはいくつかの重要なタグを学ぶアプリケーションです

「これは革命になるだろう」という記事が出たあと。業界の皆様に認知され、もちろん内外からの評価もいただ...

MySQLのインデックス設計の原則と一般的なインデックスの違いについて簡単に説明します。

インデックス定義: ディスク上に保存される個別のデータベース構造であり、データ テーブル内のすべての...

Nodejs は readline を使用してコンテンツ入力を促すサンプルコード

目次序文1. batがjsを実行する2. ターミナルにバージョン番号を入力してパッケージ化コマンドを...

Django 2.2 を MySQL データベースに接続する方法

1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...

MySQL 8.0.16 Win10 zip バージョンのインストールと設定のグラフィック チュートリアル

この記事では、MySQL 8.0.16 Win10 zip版のインストールと設定のグラフィックチュー...

Vue で $props、$attrs、$listeners を使用する方法の詳細な説明

目次背景1. 文書の説明2. 特定の用途結論背景ここで、状況について説明しましょう。親コンポーネント...

Apache ポートに基づいて仮想ホストを作成する例

apache: ポートに基づいて仮想ホストを作成する仮想ホスト(a、b、c)の作成を例に挙げます1)...

Docker に MySQL をデプロイする例

目次1 コンテナクラウドとは何ですか? 2 Dockerの紹介3 dockerを使ってMySQLをイ...

MySQL 5.7.23 バージョンのインストールチュートリアルと設定方法

MySQL を自分でインストールするのに 3 時間かかりました。チュートリアルはたくさんあるにもかか...

mysqldumpデータエクスポートの問題に関する詳細な議論

1. mysqldump の使用時にエラー (1064) が報告されます。これは、mysqldump...

MySQLの自動増分主キーの実装の詳細な説明

目次1. 自己増分値はどこに保存されますか? 2. 自己価値修正メカニズム3. 自動増分値を変更する...

mysql ローカルログインでポート番号を使用してログインできない問題の解決策

最近、Linux を使用してローカルにログインしていたところ、正常にログインできず、次のエラー メッ...

nginx リクエスト ヘッダー データ読み取りプロセスの詳細な説明

前回の記事では、nginx がリクエスト ラインのデータを読み取って、リクエスト ラインを解析する方...

docker-compose が遅すぎる場合の解決策の詳細な説明

解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...