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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...