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

推薦する

Ubuntu 18.04 に VMware Tools をインストールする際のエラーを解決する

1. オンライン チュートリアルによると、Ubuntu 18.04 のインストールはまだ失敗します。...

シンプルなドラッグ効果を実現するJavaScript

この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

LeetCode の SQL 実装 (182. 重複するメールボックス)

[LeetCode] 182.重複メールPerson という名前のテーブル内のすべての重複メールを...

Centos7.4 システムに yum ソースから mysql 5.6 をインストールする

システム環境: centos7.4 1. データベースがインストールされているかどうかを確認します。...

Reactでカスタムフックを作成する方法を教えます

1. カスタムフックとは何かロジックの再利用簡単に言えば、カスタム フックを使用すると、特定のコンポ...

ビジュアルデザイナーの成長の3つの段階のまとめ

この本「グラフィックデザイナーとして成長する」は多くの人が読んでおり、私もオリジナルの PDF 版を...

MySQLクエリ結果をCSVにエクスポートする方法

MySQL クエリ結果をcsvにエクスポートするには、通常、php を使用して mysql に接続し...

HTMLからPDFへの変換のための純粋なクライアント側と純粋なサーバー側の実装ソリューション

必要ユーザーがフォームに入力して「保存」をクリックすると、PDF ドキュメントを直接ダウンロードでき...

VirtualBox+Ubuntu16でKubernetesクラスタを構築する実装

目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...

Flex プログラム Firefox で中国語を入力すると文字化けするバグ

Firefox の下位バージョンでは中国語の文字を入力できず、上位バージョンでは文字化けした文字が表...

CSS 疑似要素と疑似クラスの魔法のような使い方についての簡単な説明

CSS は Web ページで非常に重要な役割を果たします。近年の CSS の発展に伴い、疑似要素/疑...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

大量のデータをMySQLにインポートする際に発生する問題と解決策の分析

プロジェクトでは、SQL を使用してデータ分析を実行するために、大量のデータをデータベースにインポー...

CentOS 上での MySQL 5.6 のコンパイルとインストール、および複数の MySQL インスタンスのインストールの詳細な説明

--1. mysql用の新しいグループとユーザーを作成する # ユーザー追加 -M -s /sbin...