Python の Pymysql モジュールは MySQL の追加、削除、変更、クエリを操作します

Python3 MySQL データベース接続 - PyMySQL ドライバー

PyMySQL はデータベースに接続して、追加、削除、変更、クエリを実装します。

PyMySQLとは何ですか?

PyMySQLはPython3.x版ではMySQLサーバーに接続するために使用されるライブラリで、Python2ではmysqldbが使用されます。

PyMySQL は Python Database API v2.0 仕様に従っており、純粋な Python MySQL クライアント ライブラリが含まれています。

PyMySQLをインストールする

$ pip インストール PyMySQL

1. データベース接続を作成する

mysql を操作する前に、まず mysql との接続を確立する必要があります。

conn=pymysql.connect(host=”mysqlドメイン名/ip”, user=”ユーザー名”, パスワード=”パスワード”, db=”ライブラリ名”, port=ポート番号3306, charset='utf-8')

2. カーソルオブジェクトを作成する

カーソルが作成されると、非表示のデータベース トランザクションが自動的に開始されます。

#cursor() メソッドを使用してカーソル オブジェクトを作成しますcursor
= conn.cursor()

3.SQL文を実行する

sql=“ユーザーから * を選択”

Cursor.execute(sql) または Cursor.execute(“select * from user”)

4. 送信する

conn.commit()

5. ロールバック

conn.rollback() メソッドは、現在のカーソルのすべての操作をロールバックします。各メソッドは新しいトランザクションを開始します

5. カーソルを閉じます

カーソル.クローズ()

6. データベース接続を閉じます

conn.close()

データベース接続の作成


import pymysql
#创建数据库连接
db=pymysql.connect(host="数据库域名/ip",user="账号",password="密码",db="库名",port=3306)
print(db)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
print(cursor)
#使用 execute() 方法执行 SQL 查询
cursor.execute("select * from user where mobile")
# 使用 fetchone() 方法.
results1= cursor.fetchone()#获取单条(第1条)数据
results2=cursor.fetchmany(3)#获取3条(2、3、4)数据
results3=cursor.fetchall() #获取全部(5-全部)数据
print(results3)
#关闭游标,又从起始位置开始
cursor.close()
# 关闭数据库连接
db.close()


C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x00000161DDC90E80>
<pymysql.cursors.Cursor object at 0x00000161DF8E44E0>

数据省略

Process finished with exit code 0

データベーステーブルの作成

#!/usr/bin/python3
 
import pymysql
 
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
 
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
 
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
 
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
         FIRST_NAME  CHAR(20) NOT NULL,
         LAST_NAME  CHAR(20),
         AGE INT,  
         SEX CHAR(1),
         INCOME FLOAT )"""
 
cursor.execute(sql)
 
# 关闭数据库连接
db.close()

データベース挿入操作

import pymysql
#创建数据库连接
db=pymysql.connect(host="",user="",password="",db="ck",port=3306)
print(db)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
print(cursor)
sql="INSERT INTO j.store (id,company_id,title,address,district,lon,lat,remark,updated_at,created_at,deleted_at) VALUES ('195', '61', '虹桥路店', '虹桥路1027号', '', '0.000000', '0.000000', NULL, '2019-03-15 14:54:29', '2019-03-15 14:54:29', NULL)"


#写法2
#cursor.execute('insert into stu(id,name,age) values(%s,%s,%s)',('201611001','xiaoqian',20))

#插入多条数据,具体数据用列表来保存,列表元素是元组
#cur.executemany('insert into stu(id,name,age) values(%s,%s,%s)',[('201611001','xiaoqian',20),('201611002','smile',21),('201611003','wood',23)])



try:
    #执行插入sql
    cursor.execute(sql)
    # 提交到数据库执行
    db.commit()
except:
    # 如果发生错误则回滚
    db.rollback()
# 关闭数据库连接
db.close()



C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x00000295DEA90EB8>
<pymysql.cursors.Cursor object at 0x00000295E06B44E0>

Process finished with exit code 0

データベースクエリ操作

Python は、fetchone() メソッドを使用して単一のデータを取得し、fetchall() メソッドを使用して複数のデータを取得して Mysql にクエリを実行します。

  • fetchone():このメソッドは次のクエリ結果セットを取得します。結果セットはオブジェクトです
  • fetchall():返されたすべての結果行を受信します。
  • rowcount:これは読み取り専用プロパティであり、execute() メソッドの実行後に影響を受ける行を返します。

1. 単一の SQL ステートメントのクエリ

sql = “SELECT * FROM EMPLOYEE WHERE WHERE > %s” % (1000)

2. 複数の SQL ステートメントのクエリ

    import pymysql
    #创建数据库连接
    db=pymysql.connect(host="",user="",password="",db="",port=3306)
    print(db)
    #使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    print(cursor)
    sql="select * from c.user limit 10"
    try:
        #执行sql语句
        cursor.execute(sql)
        #查询所有记录
        results=cursor.fetchall()
        print(results)#打印10条数据
        for row in results:
            print(row)#循环打印每条数据
            user_id=row[0]#第1列字段
            mobile=row[1]#第2列字段
            print(user_id,mobile)#循环打印第1、2列字段
    except:
        print('查询失败')
    #关闭数据库连接
    db.close()
    
    
    C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
    <pymysql.connections.Connection object at 0x0000018E8BEDB748>
    <pymysql.cursors.Cursor object at 0x0000018E8DB34550>
    ((2, '13888888888', '新', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (75, '13888888888', '小', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (139, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554088503, 0, 2, 0, datetime.datetime(2019, 4, 1, 11, 11, 37), datetime.datetime(2019, 4, 1, 11, 15, 3), None), (190, '13888888888', '大', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (192, '13888888888', '磊', '33010019900530156x', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 13888888888, 0, 2, 0, datetime.datetime(2019, 3, 29, 17, 26, 56), datetime.datetime(2019, 4, 3, 19, 49, 19), None), (199, '13888888888', '一', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 2, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 16, 8, 3), None), (202, '13888888888', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (203, '13888888888', '四', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None), (230, '13888888888', '大', '320382199303242813', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1554291602, 0, 2, 0, datetime.datetime(2019, 4, 3, 19, 37, 20), datetime.datetime(2019, 4, 3, 20, 11, 18), None), (278, '13700000003', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554171902, 0, 2, 0, datetime.datetime(2019, 4, 2, 10, 24, 35), datetime.datetime(2019, 4, 2, 10, 25, 8), None))
    (2, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
    2 13888888888
    (75, '13888888888', '马', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554291602, 0, 1, 0, datetime.datetime(2019, 4, 3, 19, 37, 21), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
    75 18817893609
    (139, '13888888888', '林', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554088503, 0, 2, 0, datetime.datetime(2019, 4, 1, 11, 11, 37), datetime.datetime(2019, 4, 1, 11, 15, 3), None)
    139 13888888888
    (190, '13888888888', '徐', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
    190 13888888888
    (192, '13888888888', '王', '330', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1553851802, 0, 2, 0, datetime.datetime(2019, 3, 29, 17, 26, 56), datetime.datetime(2019, 4, 3, 19, 49, 19), None)
    192 13888888888
    (199, '13888888888', '李', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 2, 0, datetime.datetime(2019, 4, 1, 10, 40, 28), datetime.datetime(2019, 4, 1, 16, 8, 3), None)
    199 13888888888
    (202, '13888888888', '三', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
    202 13888888888
    (203, '13888888888', '四', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554086702, 0, 1, 0, datetime.datetime(2019, 4, 1, 10, 40, 29), datetime.datetime(2019, 4, 1, 10, 45, 2), None)
    203 13888888888
    (230, '13888888888', '小', '320', 0, '', '', '', 1, 1, '', '', '', '', '', 30, 1554291602, 0, 2, 0, datetime.datetime(2019, 4, 3, 19, 37, 20), datetime.datetime(2019, 4, 3, 20, 11, 18), None)
    230 13888888888
    (278, '13700000003', '王', '', 0, '', '', '', 0, 1, '', '', '', '', '', 30, 1554171902, 0, 2, 0, datetime.datetime(2019, 4, 2, 10, 24, 35), datetime.datetime(2019, 4, 2, 10, 25, 8), None)
    278 13700000003
    
    Process finished with exit code 0

データベース更新操作

SQL文

sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')

sql="update c.user set sex=2 where mobile=18221124104"

cur.execute('update stu set age = %s where id = %s',(25,'201611006'))
import pymysql
#创建数据库连接
conn=pymysql.connect(host="",user="qa",password="Qa",db="c",port=3306)
print(conn)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = conn.cursor()
print(cursor)
sql="update c.user set sex=2 where mobile=18221124104"
try:
    cursor.execute(sql)
    conn.commit()
except:
    conn.rollback()
conn.close()


C:\Users\wangli\PycharmProjects\AutoMation\venv\Scripts\python.exe C:/Users/wangli/PycharmProjects/AutoMation/case/test.py
<pymysql.connections.Connection object at 0x000002C281555A20>
<pymysql.cursors.Cursor object at 0x000002C2831944A8>

Process finished with exit code 0


削除操作

#!/usr/bin/python3
 
import pymysql
 
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
 
# 使用cursor()方法获取操作游标 
cursor = db.cursor()
 
# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
   # 执行SQL语句
   cursor.execute(sql)
   # 提交修改
   db.commit()
except:
   # 发生错误时回滚
   db.rollback()
 
# 关闭连接
db.close()

Python に興味がある場合は、私がまとめた Python 学習教材の完全なセットをこの記事の最後で無料で入手できるので、試してみてください。

含まれるもの: Python 永続インストール パッケージ、Python Web 開発、Python クローラー、Python データ分析、人工知能、機械学習、その他の学習チュートリアル。Pythonをゼロから体系的に学べます!

ゼロベースの Python 学習リソースの紹介

1. Pythonの全方位学習ルート

Python 全方位ルートは、Python の一般的に使用される技術的なポイントを整理して、さまざまな分野の知識ポイントをまとめたものであり、上記の知識ポイントに応じて、対応する学習リソースを見つけることができ、より包括的に学習できることが便利です。 。
ここに画像の説明を挿入します

2.Python学習ソフト

労働者が仕事をうまくやりたいなら、まず道具を研ぐ必要があります。Pythonを学ぶのによく使われる開発ソフトはこちら!
ここに画像の説明を挿入します

3. Python入門学習ビデオ

初心者向けの学習動画も多数あり、これを見れば簡単にPythonを始めることができますよ~ここに画像の説明を挿入します

4. Python の演習

各ビデオレッスンの後には、学習結果をテストするための対応する演習があります (笑)。
ここに画像の説明を挿入します

5. Python の実践例

光学理論は役に立ちません。学んだことを実際に適用するには、それに沿ってコードを入力し、練習する必要があります。このとき、いくつかの実践的な事例から学ぶことができます。こんな情報も載ってますよ~ここに画像の説明を挿入します

6. Python インタビュー資料

Python を学んだ後、スキルがあれば外に出て仕事を見つけることができます。以下の面接の質問はすべてアリババ、テンセント、バイトなどの一流インターネット企業からのものであり、アリババの上司が権威ある回答をしていますので、この一連の面接資料を確認すれば、誰もが満足のいく仕事を見つけることができると思います。
ここに画像の説明を挿入します
ここに画像の説明を挿入します

7. データ収集

上記の Python 学習教材一式は CSDN 公式にアップロードされているので、必要な友達は WeChat で以下の CSDN 公式認定 QR コードをスキャンし、「教材を受け取る」と入力すると無料で入手できます。

おすすめ

転載: blog.csdn.net/maiya_yaya/article/details/131759894
おすすめ