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 用ビジュアル UI 管理ツール Portainer のインストールと使用方法の分析

Portainer は、ステータス表示パネル、アプリケーション テンプレートの迅速な展開、コンテナ ...

JavaScript で実装された 6 つの Web ページ画像カルーセル効果の詳細な説明

目次1. マウスがカルーセル モジュール上を通過すると、左右のボタンが表示され、モジュールを離れると...

CSS の Display、Visibility、Opacity、rgba、z-index: -1 の違い

ウェブページ上のいくつかの要素の非表示、透明、その他のプロパティを制御する必要があることがよくありま...

コマンドを使用してMySQLデータベース(de1)を作成する方法

1. MYSQLに接続するフォーマット: mysql -h ホストアドレス -u ユーザー名 -p ...

フロントエンド プロジェクトのデフォルトのスクロール バー スタイルを変更する (概要)

スクロールバーのデフォルトスタイルを変更する必要があるプロジェクトを多数作成しましたが、プラグインを...

Docker に influxdb をインストールするための詳細なチュートリアル (パフォーマンス テスト)

1. 前提条件1. プロジェクトが展開されました2. Dockerはすでにインストールされている2...

CentOS7.4 起動時の緊急モードへようこそメッセージに対する解決策

今日は仮想マシンを使って実験をしました。システムをインストールし、いくつかのオプションを最適化した後...

Windows での MySQL 8.0.18 インストール チュートリアル (図解)

ダウンロードダウンロードアドレス: https://dev.mysql.com/downloads/...

CSS における要素の表示モード

CSS では、要素タグは、要素の表示モードの違いに応じて、インラインレベル要素とブロックレベル要素の...

入力タグの名前と値の違い

type はブラウザでの入力と出力に使用されるコントロールです (たとえば、type="t...

MySQL 5.7.17 のインストールと設定方法のグラフィックチュートリアル (Win7 の場合)

Windows 7 で MySQL 5.7.17 をインストールする方法についてのグラフィック チ...

Centos7でglibcをアップグレードするとシステム異常(起動できない)になる場合の解決方法

目次問題の原因:解決:解決:私は Centos7 を使用しています (理論的にはこの方法は Cent...

シンプルなリスト機能を実装するミニプログラム

この記事の例では、参考のために簡単なリスト機能を実装するアプレットの具体的なコードを共有しています。...

Docker クリーニングの一般的な方法と問題点

大規模な開発に Docker を使用する場合でも、クリーンアップ戦略がなければ、ディスクがすぐにいっ...