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でストアドプロシージャをデバッグする最も簡単な方法

同僚から、一時テーブルを使用して変数データを挿入して表示する方法を教わったことがありますが、この方法...

CSS3アニメーションとHTML5の新機能の詳しい説明

1. CSS3アニメーション☺CSS3 アニメーションは、JavaScript を介して要素のスタイ...

LinuxでTomcatのポート番号を変更する方法

ここには複数の Tomcat があります。それらを同時に使用する場合は、ポート番号を別の番号に変更す...

nginx を使用して 1 つのドメイン名で複数の Laravel プロジェクトを構成する方法の例

背景会社のサブプロジェクトが増えるにつれて、さまざまなサイズのプロジェクトが10個以上になります(バ...

VMware14 に CentOS 7 をインストールするグラフィック チュートリアル

CentOS の紹介CentOS は、Red Hat Linux が提供する無料で利用できるソースコ...

時点に基づくMySQLクイックリカバリソリューション

なぜこのような記事を書いたかというと、数日前の夜、仕事が終わろうとしていたときに、業務側で突然、テー...

VUE+SpringBootはページング機能を実装します

この記事では主に、Vue + SpringBoot でページ分割されたリストデータを実装する方法を紹...

HTML リスト ボックス、テキスト フィールド、ファイル フィールドのサンプル コード

ドロップダウンボックス、テキストフィールド、ファイルフィールド 上半分はデモンストレーション効果、下...

ネイティブ JavaScript メッセージボード

この記事では、参考までにメッセージボードを実装するためのJavaScriptの具体的なコードを紹介し...

MySql ログイン パスワードを忘れた場合とパスワードを忘れた場合の解決策

方法1: MySQL では、次のコマンド ラインで MySQL サーバーを起動することにより、アクセ...

Vueエンジニアがカプセル化しなければならない埋め込み命令の知識のまとめ

目次序文指導の基本フック機能フック関数のパラメータ文章使い方とアイデア成し遂げる汎用性を高める要約す...

node.js が大規模プロジェクトに適さない理由

目次序文1. アプリケーションコンポーネント2. アプリケーションの種類3. アプリケーションサービ...

MySQL DDL による同期遅延を解決する方法

目次序文解決ツールの紹介仕組み使用制限使用上の注意使用例いくつかのパラメータの説明出力例Tencen...

HTMLでマスクレイヤーを実装する方法 HTMLでマスクレイヤーを使用する方法

Web ページでマスク レイヤーを使用すると、繰り返しの操作を防ぎ、読み込みを促進できます。また、ポ...

知らないかもしれないmysqldumpパラメータ

前回の記事で、mysqldump バックアップ ファイルに記録されるタイムスタンプ データは UTC...