pymysql 庫 - python 操作 mysql

環境: Win10 x64 + Python 3.7 +?PyMySQL ?1.0.2 + MySQL 8.0.27

1 安裝

pip install pymysql

2 地址

https://pypi.org/project/pymysql/

3.1 數據庫版本查詢 (search_version.py)


import pymysql# 打開數據庫連接
try:db = pymysql.connect(host='localhost', user='root', passwd='123456', port=3306)print('連接成功!')
except:print('something wrong!')# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()# 使用 execute()  方法執行 SQL 查詢
cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法獲取單條數據.fetchone只返回一維元組
data = cursor.fetchone()
print(type(data))
print(data)
print("Database version : %s " % data)# 關閉數據庫連接
db.close()'''
連接成功!
<class 'tuple'>
('8.0.27',)
Database version : 8.0.27 
'''

3.2 創建表 (create_table.py)


import pymysql# 打開數據庫連接
try:db = pymysql.connect(host='localhost', user='root', passwd='123456', port=3306, db='db_jupiter')print('連接成功!')
except:print('something wrong!')# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()# 使用 execute() 方法執行 SQL,如果表存在則刪除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# 使用預處理語句創建表
sql = """CREATE TABLE EMPLOYEE (ID INT NOT NULL AUTO_INCREMENT,FIRST_NAME  CHAR(20) NOT NULL COMMENT '名字',LAST_NAME  CHAR(20),AGE INT COMMENT '年齡',  SEX CHAR(1) COMMENT '性別',INCOME FLOAT NOT NULL COMMENT '收入',PRIMARY KEY (ID))"""cursor.execute(sql)
print('建表成功!')# 關閉數據庫連接
db.close()'''
連接成功!
建表成功!
'''

3.3 插入數據 (insert_update_delete_table.py)


import pymysql# 打開數據庫連接
try:db = pymysql.connect(host='localhost', user='root', passwd='123456', port=3306, db='db_jupiter')print('連接成功!')
except:print('something wrong!')# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()# SQL 插入語句
# sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME) VALUES ('Qin', 'DeXu', 20, 'M', 2000)"""
# sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME) VALUES ('Li', 'Xiaofei', 20, 'F', 3000)"""
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME) VALUES ('Wang', 'HanYu', 20, 'M', 5000)"""# SQL 更新語句
# sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')# SQL 刪除語句
# sql = "DELETE FROM EMPLOYEE WHERE AGE > %d" % (20)try:# 執行sql語句cursor.execute(sql)# 提交到數據庫執行db.commit()print('數據插入成功!')
except:# 如果發生錯誤則回滾db.rollback()print('數據插入錯誤!')# 關閉數據庫連接
db.close()'''
連接成功!
數據插入成功!
'''

3.4 批量插入數據 (insert_table_many.py)


import pymysql# 打開數據庫連接
try:db = pymysql.connect(host='localhost', user='root', passwd='123456', port=3306, db='db_jupiter')print('連接成功!')
except:print('something wrong!')# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()# SQL 插入語句
data = [('DongFang', 'YuXiao', 25, 'M', 2000.30),('OuYang', 'HeHe', 22, 'F', 2000),('GongSun', 'Sheng', 23, 'M', 2000)
]stmt = "INSERT INTO EMPLOYEE (FIRST_NAME,LAST_NAME, AGE, SEX, INCOME) VALUES (%s, %s, %s, %s, %s)"try:# 執行sql語句cursor.executemany(stmt, data)# 提交到數據庫執行db.commit()print('數據插入成功!')
except:# 如果發生錯誤則回滾db.rollback()print('數據插入錯誤!')# 關閉數據庫連接
db.close()'''
連接成功!
數據插入成功!
''''''
說明:
占位符 %s 改成 %d ,報錯。
'''

3.5 查詢數據 (search_table.py)


import pymysql# 打開數據庫連接
try:db = pymysql.connect(host='localhost', user='root', passwd='123456', port=3306, db='db_jupiter')print('連接成功!')
except:print('something wrong!')# 使用 cursor() 方法創建一個游標對象 cursor
cursor = db.cursor()# SQL 查詢語句
sql = "SELECT * FROM EMPLOYEE WHERE INCOME >= %s" % (3000)try:# 執行SQL語句cursor.execute(sql)# rowcount: 這是一個只讀屬性,并返回執行execute()方法后影響的行數。row_count = cursor.rowcountprint(type(row_count))print(row_count)# fetchall(): 接收全部的返回結果行, 獲取所有記錄列表 fetchall返回二維元組(元組中含有元組)results = cursor.fetchall()print(type(results))print(results)for row in results:id = row[0]fname = row[1]lname = row[2]age = row[3]sex = row[4]income = row[5]# 打印結果print('數據查詢成功!')print("id=%s, fname=%s, lname=%s, age=%s, sex=%s, income=%s" % (id, fname, lname, age, sex, income))
except:print("Error: unable to fetch data")# 關閉數據庫連接
db.close()'''
連接成功!
<class 'int'>
2
<class 'tuple'>
((2, 'Li', 'Xiaofei', 20, 'F', 3000.0), (3, 'Wang', 'HanYu', 20, 'M', 5000.0))
數據查詢成功!
id=2, fname=Li, lname=Xiaofei, age=20, sex=F, income=3000.0
數據查詢成功!
id=3, fname=Wang, lname=HanYu, age=20, sex=M, income=5000.0
'''

其他情況:
executemany()方法要求傳入的參數是元組嵌套的列表,列表中每個元組代表一組數據,而元組中的每個值則代表一個數據的字段值。

####################################
批量插入1:
data = [
? ('Jane', date(2005, 2, 12)),
? ('Joe', date(2006, 5, 23)),
? ('John', date(2010, 10, 3)),
]

stmt = "INSERT INTO employees (first_name, hire_date) VALUES (%s, %s)"
cursor.executemany(stmt, data)

INSERT INTO employees (first_name, hire_date)
VALUES ('Jane', '2005-02-12'), ('Joe', '2006-05-23'), ('John', '2010-10-03')

####################################
批量插入2:
# 定義 SQL 語句
insert_sql = "INSERT INTO person VALUES (%s, %s, %s)"

# 定義數據
data = [
? ? ('1', '張三', 18),
? ? ('2', '李四', 19),
? ? ('3', '王五', 20)
]
# 批量插入數據
cursor.executemany(insert_sql, data)

批量刪除3:
# 定義 SQL 語句
delete_sql = "DELETE FROM ?WHERE id = %s"
# 定義數據
ids = [(1,), (2,), (3,)]
# 批量刪除數據
cursor.executemany(delete_sql, ids)


參考鏈接:
https://zhuanlan.zhihu.com/p/397765212
http://www.xoxxoo.com/index/index/article/id/288
https://blog.csdn.net/m0_48300767/article/details/131063781
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-executemany.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/36946.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/36946.shtml
英文地址,請注明出處:http://en.pswp.cn/news/36946.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python安裝第三方包時報錯:...\lib\site-packages\pip\_vendor\urllib3\response.py...

安裝redis第三方包&#xff1a; pip install redis報錯現象&#xff1a; 解決方法&#xff1a;使用以下命令可成功安裝 pip install redis -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

關于網絡入侵檢測領域使用Spark/Flink等計算框架做分布式

關于網絡入侵檢測領域使用Spark/Flink等計算框架做分布式 0、引言1 基于LightGBM的網絡入侵檢測研究2 基于互信息法的智能化運維系統入侵檢測Spark實現3 基于Spark的車聯網分布式組合深度學習入侵檢測方法4 基于Flink的分布式在線集成學習框架研究5 基于Flink的分布式并行邏輯回…

mongodb基礎

mongodb語法 參考文檔&#xff1a;https://docs.mongodb.com/manual/reference/ BSON Types BSON Type有2種標識符&#xff0c;整形和字符串 類型數值字符串說明Double1“double”String2“string”Object3“object”Array4“array”Binary data5“binData”Undefined6“un…

8.9黃金最新行情走勢分析及短線交易策略

近期有哪些消息面影響黃金走勢&#xff1f;黃金多空該如何研判&#xff1f; ?黃金消息面解析&#xff1a;周三&#xff08;8月9日&#xff09;現貨黃金維持震蕩&#xff0c;目前交投于1930美元附近&#xff0c;隔日現貨黃金盤中震蕩下行&#xff0c;失守1930關口并在美盤時段…

【Spring】-Spring的IoC和DI

作者&#xff1a;學Java的冬瓜 博客主頁&#xff1a;?冬瓜的主頁&#x1f319; 專欄&#xff1a;【Framework】 主要內容&#xff1a;什么是spring&#xff1f;IoC容器是什么&#xff1f;如何使代碼解耦合&#xff1f;IoC的核心原理&#xff0c;IoC的優點。依賴注入/對象裝配/…

【ARM 嵌入式 編譯系列 10 -- GCC 編譯縮減可執行文件 elf 文件大小】

文章目錄 GCC 如何縮減可執行文件size測試代碼 上篇文章&#xff1a;ARM 嵌入式 編譯系列 9-- GCC 編譯符號表&#xff08;Symbol Table&#xff09;的詳細介紹 下篇文章&#xff1a;ARM 嵌入式 編譯系列 10.1 – GCC 編譯縮減可執行文件 elf 文件大小 GCC 如何縮減可執行文件s…

Linux下在qtcreator中創建qt程序

目錄 1、新建項目 2、單工程項目創建 3、多工程項目創建 4、添加子工程&#xff08;基于多工程目錄結構&#xff09; 5、 .pro文件 1、新建項目 切換到“編輯”界面&#xff0c;點擊菜單欄中的“文件”-“新建文件或項目” 2、單工程項目創建 只有一個工程的項目&#…

Axure RP移動端高保真CRM辦公客戶管理系統原型模板及元件庫

Axure RP移動端高保真CRM辦公客戶管理系統原型模板及元件庫&#xff0c;一套典型的移動端辦公工具型APP Axure RP原型模板&#xff0c;可根據實際的產品需求進行擴展&#xff0c;也可以作為移動端原型設計的參考案例。為提升本作品參考價值&#xff0c;在模板設計過程中盡量追求…

chatGPT應用于房地產行業

作為 2023 年的房地產專業人士&#xff0c;您無疑認識到技術對行業的重大影響。近年來&#xff0c;一項技術進步席卷了世界——人工智能。人工智能徹底改變了房地產業務的各個方面&#xff0c;從簡化管理任務到增強客戶互動。 在本文中&#xff0c;我們將探討幾種巧妙的人工智…

HTML 語言簡介

1.概述 HTML 是網頁使用的語言&#xff0c;定義了網頁的結構和內容。瀏覽器訪問網站&#xff0c;其實就是從服務器下載 HTML 代碼&#xff0c;然后渲染出網頁。 HTML 的全名是“超文本標記語言”&#xff08;HyperText Markup Language&#xff09;&#xff0c;上個世紀90年代…

zabbix自動注冊服務器以及部署代理服務器

文章目錄 Zabbix自動注冊服務器及部署代理服務器一.zabbix自動注冊1.什么是自動注冊2.環境準備3.zabbix客戶端配置4.在 Web 頁面配置自動注冊5.驗證自動注冊 二.部署 zabbix 代理服務器1.分布式監控的作用&#xff1a;2.環境部署3.代理服務器配置4.客戶端配置5.web頁面配置5.1 …

MS9940T 國產 模擬前端AFE芯片 11-15 節鋰電池或磷酸鹽電池管理芯片 替代BQ76940

產品簡述 MS9940T 是模擬前端 (AFE) 芯片&#xff0c;支持11 到 15 組電池串聯。通過 I 2 C &#xff0c;主機控制器 可以使用 MS9940T 來實現電池組管理功能&#xff0c;例如監控&#xff08;電池電壓、電池組電流、電池組 溫度&#xff09;、保護&#xff08;控制…

分類預測 | MATLAB實現GWO-BiLSTM-Attention多輸入分類預測

分類預測 | MATLAB實現GWO-BiLSTM-Attention多輸入分類預測 目錄 分類預測 | MATLAB實現GWO-BiLSTM-Attention多輸入分類預測預測效果基本介紹程序設計參考資料 預測效果 基本介紹 1.GWO-BiLSTM-Attention 數據分類預測程序 2.代碼說明&#xff1a;基于灰狼優化算法&#xff08…

vuejs 設計與實現 - 組件的實現原理

1.渲染組件 如果是組件則&#xff1a;vnode .type的值是一個對象。如下&#xff1a; const vnode {type: MyComponent,}為了讓渲染器能處理組件類型的虛擬節點&#xff0c;我們還需要在patch函數中對組件類型的虛擬節點進行處理&#xff0c;如下&#xff1a; function patc…

CentOS7.9 禁用22端口,使用其他端口替代

文章目錄 業務場景操作步驟修改sshd配置文件修改SELinux開放給ssh使用的端口修改防火墻&#xff0c;開放新端口重啟sshd生效 相關知識點介紹sshd服務SELinux服務firewall.service服務 業務場景 我們在某市實施交通信控平臺項目&#xff0c;我們申請了一臺服務器&#xff0c;用…

學習Vue:列表渲染(v-for)

在 Vue.js 中&#xff0c;實現動態列表的顯示是非常常見的需求。為了達到這個目的&#xff0c;Vue 提供了 v-for 指令&#xff0c;它允許您迭代一個數組或對象&#xff0c;將其元素渲染為列表。然而&#xff0c;在使用 v-for 時&#xff0c;key 屬性的設置也非常重要&#xff0…

微信小程序(原生)搜索功能實現

一、效果圖 二、代碼 wxml <van-searchvalue"{{ keyword }}"shape"round"background"#000"placeholder"請輸入關鍵詞"use-action-slotbind:change"onChange"bind:search"onSearch"bind:clear"onClear&q…

實踐-CNN卷積層

實踐-CNN卷積層 1 卷積層構造2 整體流程3 BatchNormalization效果4 參數對比5 測試效果 1 卷積層構造 2 整體流程 根據網絡結構來寫就可以了。 池化 拉平 訓練一個網絡需要2-3天的時間。用經典網絡來&#xff0c;一些細節沒有必要去扣。 損失函數&#xff1a; fit模型&…

運維監控學習筆記1

1、監控對象&#xff1a; 1、監控對象的理解&#xff1b;CPU是怎么工作的&#xff1b; 2、監控對象的指標&#xff1a;CPU使用率&#xff1b;上下文切換&#xff1b; 3、確定性能基準線&#xff1a;CPU負載多少才算高&#xff1b; 2、監控范圍&#xff1a; 1、硬件監控&#x…

線性掃描寄存器分配算法介紹

線性掃描寄存器分配 文章目錄 線性掃描寄存器分配1. 算法介紹2. 相關概念3. 算法的實現3.1 偽代碼3.2 圖示 參考文獻 論文地址&#xff1a; Linear Scan Register Allocation ? 我們描述了一種稱為線性掃描的快速全局寄存器分配的新算法。該算法不基于圖形著色&#xff0c;而…