MySQL系列--4.使用Python3訪問資料庫

来源:https://www.cnblogs.com/webDepOfQWS/archive/2019/04/12/10693105.html
-Advertisement-
Play Games

使用Python3操作MySQL資料庫:創建表,插入數據,查詢數據,更新數據,刪除數據。 ...


1、安裝MySQL驅動

pip install mysql-connector
安裝完成後進入命令行模式,導入驅動,如果不報錯,說明安裝成功

Python 3.6.7 (default, Oct 22 2018, 11:32:17) 
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mysql.connector
>>>

2、安裝MySQL

MySQL安裝請參考:https://www.cnblogs.com/webDepOfQWS/p/10685617.html

3、操作資料庫

MySQL操作資料庫的一般步驟如下:
a、建立連接
b、通過連接對象得到游標對象
c、執行SQL語句,獲取執行結果,如果執行的SQL語句會改變資料庫或表 ,需要提交,才會保存修改。
d、關閉游標對象,關閉連接對象。

創建表並插入數據

在rms資料庫中創建一張表:user_info並插入2條數據,創建表SQL語句如下:

create table user_info(
    id int(10) primary key,
    name char(20) not null,
    passwd char(40) not null,
    email char(20) not null,
    phone char(20) not null,
    role  char(10) not null,
    sex char(10) not null,
    status int(10) not null,
    createAt datetime not null,
    exprAt datetime not null,
    validDays int(10) not null,
    delAt datetime 
)ENGINE=InnoDB DEFAULT  CHARSET=utf8;

Python3代碼:

#coding:utf-8
#導入驅動
import   mysql.connector
#建立連接
conn = mysql.connector.connect(host="127.0.0.1",user='root',database='rms',password='password')
#獲游標標對象
cursor = conn.cursor()
#SQL語句
SQL1='''create table user_info(
    id int(10) primary key,
    name char(20) not null,
    passwd char(40) not null,
    email char(20) not null,
    phone char(20) not null,
    role  char(10) not null,
    sex char(10) not null,
    status int(10) not null,
    createAt datetime not null,
    exprAt datetime not null,
    validDays int(10) not null,
    delAt datetime 
)ENGINE=InnoDB DEFAULT  CHARSET=utf8;'''
SQL2='''insert into  user_info values 
(1,"StephenWang7","123456","[email protected]","15103887470","admin","male","200","20190412201130","20190419201130",30,null)'''
try:
    #執行創建表的SQL語句
    cursor.execute(SQL1)
    #執行插入語句
    cursor.execute(SQL2)
    #提交
    conn.commit()
except Exception as e:
    print(e)
finally:
    #關閉游標對象
    cursor.close()
    #關閉連接
    conn.close

連接資料庫查看結果:

mysql> select  count(*) from  user_info;
+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.27 sec)

mysql> 

查詢SQL執行結果

fetchone():返回一條結果。
fetchall():返回所有結果。
fetchmany([size]):返回size條結果。
示例1:

try:
    cursor.execute("select  count(*) from user_info;")
    #獲取執行結果
    result = cursor.fetchone()
    print(result)

except Exception as e:
    print(e)

輸出1:

#返回的是一個tuple
(2,)

示例2:
查詢user_info表中所有的記錄。

try:
    cursor.execute("select  count(*) from user_info;")
    #獲取執行結果,fatchone 只返回一條結果
    result = cursor.fetchone()
    print(result)

except Exception as e:
    print(e)

運行示例2的代碼時,報錯:Unread result found,在連接資料庫時設置'buffered': True。

conn = mysql.connector.connect(host="127.0.0.1",user='root',database='rms',password='password',buffered=True)

輸出2:

(1, 'StephenWang7', '123456', '[email protected]', '15103887470', 'admin', 'male', 200, datetime.datetime(2019, 4, 12, 20, 11, 30), datetime.datetime(2019, 4, 19, 20, 11, 30), 30, None)

更新和刪除

更新和刪除的代碼與創建表類似,需要說明的一點是執行語句之後需要提交(commmit)。

#coding:utf-8
#導入驅動
import   mysql.connector
#建立連接
conn = mysql.connector.connect(host="127.0.0.1",user='root',database='rms',password='password',buffered=True)
#獲游標標對象
cursor = conn.cursor()
try:
    #執行更新語句
    cursor.execute("update user_info  set passwd=%s where id=%s",['py123456',1])
    #獲取執行結果
    result = cursor.fetchone()
    print(result)
    #提交
    conn.commit()
except Exception as e:
    print(e)
finally:
    #關閉游標對象
    cursor.close()
    #關閉連接
    conn.close

MySQL的占位符為%s,連接資料庫查看結果:

mysql> select  passwd from user_info  where id=1;
+----------+
| passwd   |
+----------+
| py123456 |
+----------+
1 row in set (0.03 sec)

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一. 原子操作的定義 原子操作,是指一組相關聯的操作要麼都不間斷的執行,要麼都不執行。 二. 原子操作對同步與互斥的意義 1. 討論原子操作的意義之前,先瞭解操作系統中如下概念: 競爭條件:兩個或多個進程或線程讀寫某些共用數據,而最後的結果取決於進程運行的精確時序,稱為競爭條件。 臨界區:把對共用內 ...
  • Linux信號_總結 對信號本質的理解: 類似於中斷,區別在於中斷是由硬體產生的,而信號是由軟體實現的。 信號的來源: 觸發硬體(觸發鍵盤,或是硬體故障);軟體信號函數kill 、alarm、setitimer、sigqueue 等函數。 信號的分類: 可靠信號與不可靠信號,實時信號與非實時信號; ...
  • 1.常用快捷鍵 Ctrl+d 2.Shell 常用通配符: 3.在命令行中使用幫助 例如 man命令,它是Manual pages的縮寫。 要查看相應區段的內容,就在 man 後面加上相應區段的數字即可,如: 4.su /sudo和su- su <user> 可以切換到用戶 user,執行時需要輸入 ...
  • Linux ssh登陸慢的兩種原因分析 如果做運維就一定會遇到ssh登陸Linux伺服器慢的問題,問題比較好解決,一般Google之後有很多文章都告訴你解決方法,但是很少有文章分析為什麼會慢,這篇文章簡單分析下ssh登陸慢的原因。 useDNS配置導致登陸慢 如果ssh server的配置文件(通常 ...
  • 1. 安裝基礎依賴 2. 下載源碼包 3.cd php-7.2.7 4.配置 5.make && make install 6.配置文件 # cp php.ini-development /usr/local/php/lib/php.ini # cp /usr/local/php/etc/php-f ...
  • 1. 安裝 2. 創建SSHFS 掛載目錄 3.使用SSHFS 掛載遠程的文件系統 sudo sshfs -o allow_other,IdentityFile=~/.ssh/id_rsa #username@site:/share1/home/siyuan /mnt/siyuan 例: sshfs ...
  • 想學習下JavaWeb,手頭有2017年有活動的時候買的一本書,還是全彩的,應該很適合我這種菜鳥技術渣。 只可惜照著書搭建了一套Web環境,代碼和db腳本都是拷貝的光碟里的,也反覆檢查了資料庫的連接情況,Navicat可以正常連,涉及到的兩個資料庫配置文件裡面的url、埠、密碼應該都是對的,反覆折 ...
  • 1.MongoDB數據歸檔的意義 和其他類型的資料庫一樣,歸檔對MongoDB同樣重要。通過歸檔,可以保持集合中合適的數據量,對資料庫的性能是一種保障,也就是大家常說的數據冷熱分離。 同時,歸檔對資料庫的管理也帶來了很大方便性,例如日常的備份、災難恢復等。 在此,不再展開敘述了。 2.集合數據歸檔流 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...