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 のネストされた表示実装

推薦する

Dockerは同じIPネットワークセグメントとの接続を実現する

最近、Docker とホストが同じネットワーク セグメント上で通信する問題を解決し、そのプロセス全体...

Reactの3つの主要属性における状態の使用の詳細な説明

目次クラスコンポーネント機能コンポーネントsetStateの落とし穴React では多くの場所でデー...

ポップアップウィンドウの上下中央左右と透明な背景のロックウィンドウ効果を実現する CSS

クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...

MySQLデータ行と行オーバーフローのメカニズムの詳細な説明

1. 行の形式は何ですか? MySQL の行形式の設定は次のように表示されます。 実際、MySQL ...

オンデマンドで Vue コンポーネントを自動的にインポートする方法

目次グローバル登録部分登録ローカル自動登録さまざまなソリューションの比較コンポーネント名について参照...

MySQLのさまざまなロックの概念的理解

楽観的ロック楽観的ロックは、主にデータ バージョン記録メカニズムに基づいて実装され、通常はデータベー...

macOS SierraにApache2.4+PHP7.0+MySQL5.7.16をインストールする

Mac システムには PHP と Apache が付属していますが、必要なバージョンではない場合があ...

MySQLはデータ復旧を実装するためにbinlogログを使用する

MySQL binlog は MySQL ログの中で非常に重要なログであり、データベースのすべての ...

Linux で nginx を起動および再起動する方法

Nginx (エンジン x) は、IMAP/POP3/SMTP サービスも提供する高性能 HTTP ...

vue 動的コンポーネント

目次1. コンポーネント2. キープアライブ2.1 問題点2.2 キープアライブを使って解決する2....

Vue モバイル プロジェクトでページ キャッシュを実装する方法のサンプル コード

背景モバイル デバイスでは、ページ ジャンプ間のキャッシュが必須要件です。例: ホームページ =&g...

LinuxにNginxをインストールする正しい手順

序文私のように、Java バックエンドに勤勉な人であれば、多数のプロジェクト機能を実装することに加え...

MySQLとOracleの誤解の詳細な説明

目次本質的な違いデータベースセキュリティ権限スキーマの移行パターンオブジェクトの類似性スキーマオブジ...

ウェブサイトのデザインを改善するための役立つ提案を提供します

<br />ウェブサイトを科学的にデザインする: アイトラッキング研究から学ぶ 23 の...

JavaScript 配列重複排除ソリューション

目次方法1: set: データ型ではなくデータ構造であり、メンバーは一意である方法2: オブジェクト...