亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python數(shù)據(jù)庫(kù)編程之pymysql詳解

 更新時(shí)間:2023年05月05日 10:07:31   作者:我愛(ài)讓機(jī)器學(xué)習(xí)  
本文主要介紹了Python數(shù)據(jù)庫(kù)編程中pymysql,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

Python數(shù)據(jù)庫(kù)編程之pymysql

學(xué)習(xí)之前務(wù)必安裝MySQL并已啟動(dòng)相關(guān)服務(wù)。

一、pymsql的安裝

在python3的環(huán)境中直接使用以下命令即可:

pip install pymysql
#或者
pip3 install pymysql

安裝完畢后可使用以下命令查看:

pip list | grep PyMySQL 
#注意大小寫(xiě)

結(jié)果如下:

二、連接數(shù)據(jù)庫(kù)

pymysql連接數(shù)據(jù)庫(kù)使用的是 pymsql.connect() 函數(shù),其常用參數(shù)如下:

參數(shù)說(shuō)明
dsn數(shù)據(jù)源名稱,給出該參數(shù)表示數(shù)據(jù)庫(kù)依賴
host=None數(shù)據(jù)庫(kù)連接地址
user=None數(shù)據(jù)庫(kù)用戶名
password=‘’數(shù)據(jù)庫(kù)用戶密碼
database=None要連接的數(shù)據(jù)庫(kù)名稱
port=3306端口號(hào),默認(rèn)為3306
charset=‘’要連接的數(shù)據(jù)庫(kù)的字符編碼(可以在終端登陸mysql后使用 \s 查看,如下圖)
connect_timeout=10連接數(shù)據(jù)庫(kù)的超時(shí)時(shí)間,默認(rèn)為10
port=3306端口號(hào),默認(rèn)為3306

連接完數(shù)據(jù)庫(kù)后,需要?jiǎng)?chuàng)建一個(gè)游標(biāo)對(duì)象,模塊會(huì)通過(guò)游標(biāo)對(duì)象來(lái)執(zhí)行sql語(yǔ)句以及獲取查詢結(jié)果,接下來(lái)直接通過(guò)代碼展示各方法。
示例:

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在這里輸入用戶名
    password='888888',     #在這里輸入密碼
    charset='utf8mb4' 
    ) #連接數(shù)據(jù)庫(kù)

cursor = db.cursor() #創(chuàng)建游標(biāo)對(duì)象

sql = 'show databases' #sql語(yǔ)句

cursor.execute(sql)  #執(zhí)行sql語(yǔ)句

one = cursor.fetchone()  #獲取一條數(shù)據(jù)
print('one:',one)

many = cursor.fetchmany(3) #獲取指定條數(shù)的數(shù)據(jù),不寫(xiě)默認(rèn)為1
print('many:',many)

all = cursor.fetchall() #獲取全部數(shù)據(jù)
print('all:',all)

cursor.close()  
db.close()  #關(guān)閉數(shù)據(jù)庫(kù)的連接

運(yùn)行結(jié)果:

one: ('coldbox',)
many: (('coldboxtest',), ('db_student',), ('information_schema',))
all: (('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))

從結(jié)果可以看出,fetchone(),fetchmany(size),fetchall() 三個(gè)函數(shù)返回值都是元組,但是fetchone()返回的是單個(gè)元組,另外兩個(gè)返回的都是元組的嵌套。

三、創(chuàng)建和管理數(shù)據(jù)庫(kù)

使用游標(biāo)對(duì)象來(lái)執(zhí)行創(chuàng)建和刪除數(shù)據(jù)庫(kù)的sql語(yǔ)句示例:

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在這里輸入用戶名
    password='888888',     #在這里輸入密碼
    charset='utf8mb4' 
    )

cursor = db.cursor() #創(chuàng)建游標(biāo)對(duì)象

try:

    sql = 'show databases' 
    cursor.execute(sql)
    print('未創(chuàng)建數(shù)據(jù)庫(kù)前:',cursor.fetchall()) #獲取創(chuàng)建數(shù)據(jù)庫(kù)前全部數(shù)據(jù)庫(kù)

    dbname = 'justtest'
    sql = 'create database if not exists %s'%(dbname) #創(chuàng)建數(shù)據(jù)庫(kù)
    cursor.execute(sql)
    sql = 'show databases' 
    cursor.execute(sql)
    print('創(chuàng)建新的數(shù)據(jù)庫(kù)后:',cursor.fetchall()) #獲取創(chuàng)建數(shù)據(jù)庫(kù)后全部數(shù)據(jù)庫(kù)

    sql = 'drop database if exists %s'%(dbname) #刪除數(shù)據(jù)庫(kù)
    cursor.execute(sql)
    sql = 'show databases' 
    cursor.execute(sql)
    print('刪除新的數(shù)據(jù)庫(kù)后:',cursor.fetchall()) #獲取刪除數(shù)據(jù)庫(kù)后全部數(shù)據(jù)庫(kù)

except Exception as e:
    print(e)
    db.rollback()  #回滾事務(wù)

finally:
    cursor.close() 
    db.close()  #關(guān)閉數(shù)據(jù)庫(kù)連接

運(yùn)行結(jié)果:

未創(chuàng)建數(shù)據(jù)庫(kù)前: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
創(chuàng)建新的數(shù)據(jù)庫(kù)后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('justtest',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))
刪除新的數(shù)據(jù)庫(kù)后: (('coldbox',), ('coldboxtest',), ('db_student',), ('information_schema',), ('mysql',), ('performance_schema',), ('sys',), ('test',), ('wan',))

四、創(chuàng)建和管理表

使用游標(biāo)對(duì)象來(lái)執(zhí)行創(chuàng)建和管理表的sql語(yǔ)句示例:

import pymysql

db = pymysql.connect(
    host="localhost", 
    port=3306,
    user='root',    #在這里輸入用戶名
    password='888888',     #在這里輸入密碼
    charset='utf8mb4',
    database='justtest'     #指定操作的數(shù)據(jù)庫(kù)
    )

cursor = db.cursor() #創(chuàng)建游標(biāo)對(duì)象

try:

    tableName = 'user'
    sql = 'create table  %s (id varchar(20) not null, name varchar(20) not null, primary key(id))'%(tableName) 
    cursor.execute(sql)     #執(zhí)行sql語(yǔ)句,創(chuàng)建表

    sql = 'show tables'
    cursor.execute(sql)
    print('顯示創(chuàng)建的表:',cursor.fetchall())  #顯示創(chuàng)建的表


    sql = 'desc %s'%(tableName) 
    cursor.execute(sql)
    print('顯示表結(jié)構(gòu):',cursor.fetchall())  #顯示表結(jié)構(gòu)

except Exception as e:
    print(e)
    db.rollback()  #回滾事務(wù)

finally:
    cursor.close() 
    db.close()  #關(guān)閉數(shù)據(jù)庫(kù)連接

運(yùn)行結(jié)果:

顯示創(chuàng)建的表: (('user',),)
顯示表結(jié)構(gòu): (('id', 'varchar(20)', 'NO', 'PRI', None, ''), ('name', 'varchar(20)', 'NO', '', None, ''))

總結(jié)

對(duì)于修改表結(jié)構(gòu),插入,查詢,刪除數(shù)據(jù)等操作,與上面的操作大體一樣,主要是對(duì) sql 語(yǔ)句的編寫(xiě),此處不做贅述。
整體過(guò)程:
連接數(shù)據(jù)庫(kù) -> 創(chuàng)建游標(biāo)對(duì)象 -> 編寫(xiě)sql語(yǔ)句 -> 執(zhí)行sql語(yǔ)句 -> 獲取結(jié)果 -> 關(guān)閉數(shù)據(jù)庫(kù)連接

connect() 函數(shù)常用參數(shù):

參數(shù)說(shuō)明
dsn數(shù)據(jù)源名稱,給出該參數(shù)表示數(shù)據(jù)庫(kù)依賴
host=None數(shù)據(jù)庫(kù)連接地址
user=None數(shù)據(jù)庫(kù)用戶名
password=‘’數(shù)據(jù)庫(kù)用戶密碼
database=None要連接的數(shù)據(jù)庫(kù)名稱
port=3306端口號(hào),默認(rèn)為3306
charset=‘’要連接的數(shù)據(jù)庫(kù)的字符編碼(可以在終端登陸mysql后使用 \s 查看,如下圖)
connect_timeout=10連接數(shù)據(jù)庫(kù)的超時(shí)時(shí)間,默認(rèn)為10
port=3306端口號(hào),默認(rèn)為3306

 connect() 函數(shù)返回的連接對(duì)象的方法總結(jié):

方法名說(shuō)明
close()關(guān)閉數(shù)據(jù)庫(kù)的連接
commit()提交事務(wù)
rollback()回滾事務(wù)
cursor()獲取游標(biāo)對(duì)象,操作數(shù)據(jù)庫(kù),如執(zhí)行DML操作,調(diào)用存儲(chǔ)過(guò)程等

 游標(biāo)對(duì)象的方法:

方法名說(shuō)明
callproc(procname,[,parameters])調(diào)用存儲(chǔ)過(guò)程,需要數(shù)據(jù)庫(kù)支持
close()關(guān)閉當(dāng)前游標(biāo)
execute(operation,[,parameters])執(zhí)行數(shù)據(jù)庫(kù)操作,sql語(yǔ)句或者數(shù)據(jù)庫(kù)命令
executemany(operation, seq_of_params)用于批量操作
fetchone()獲取查詢結(jié)果集合中的下一條記錄
fetchmany(size)獲取指定數(shù)量的記錄
fetchall()獲取查詢結(jié)果集合所有記錄
nextset()跳至下一個(gè)可用的數(shù)據(jù)集
arraysize指定使用fetchmany()獲取的行數(shù),默認(rèn)為1
setinputsizes(size)設(shè)置調(diào)用execute*()方法時(shí)分配的內(nèi)存區(qū)域大小
setoutputsizes(size)設(shè)置列緩沖區(qū)大小,對(duì)大數(shù)據(jù)列尤其有用

以上就是Python數(shù)據(jù)庫(kù)編程之pymysql詳解的詳細(xì)內(nèi)容,更多關(guān)于Python pymysql的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

  • 使用Scrapy框架爬取網(wǎng)頁(yè)并保存到Mysql的實(shí)現(xiàn)

    使用Scrapy框架爬取網(wǎng)頁(yè)并保存到Mysql的實(shí)現(xiàn)

    本文主要介紹了使用Scrapy框架爬取網(wǎng)頁(yè)并保存到Mysql的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Django創(chuàng)建一個(gè)后臺(tái)的基本步驟記錄

    Django創(chuàng)建一個(gè)后臺(tái)的基本步驟記錄

    這篇文章主要給大家介紹了關(guān)于Django創(chuàng)建一個(gè)后臺(tái)的基本步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • anconda的pip下載包出現(xiàn)的問(wèn)題解決

    anconda的pip下載包出現(xiàn)的問(wèn)題解決

    本文主要介紹了anconda的pip下載包出現(xiàn)的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python OpenCV實(shí)現(xiàn)測(cè)量圖片物體寬度

    Python OpenCV實(shí)現(xiàn)測(cè)量圖片物體寬度

    這篇文章主要介紹了Python OpenCV實(shí)現(xiàn)測(cè)量圖片物體寬度,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python類型提示Type Hints示例詳解

    Python類型提示Type Hints示例詳解

    在做自動(dòng)化測(cè)試的時(shí)候,類型提示會(huì)讓你寫(xiě)代碼時(shí)更加流程,當(dāng)你在一個(gè)模塊定義了類型,而其他模塊沒(méi)有提示的時(shí)候,是相當(dāng)不方便,這篇文章主要給大家介紹了關(guān)于Python類型提示Type Hints的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Python 解析庫(kù)json及jsonpath pickle的實(shí)現(xiàn)

    Python 解析庫(kù)json及jsonpath pickle的實(shí)現(xiàn)

    這篇文章主要介紹了Python 解析庫(kù)json及jsonpath pickle的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • python3中set(集合)的語(yǔ)法總結(jié)分享

    python3中set(集合)的語(yǔ)法總結(jié)分享

    這篇文章主要總結(jié)了關(guān)于python3中set(集合)的語(yǔ)法的相關(guān)資料,文中給出了詳細(xì)的示例代碼,對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03
  • 利用Python找回微信撤回信息

    利用Python找回微信撤回信息

    一條撤回的微信消息,就像一個(gè)秘密,讓你迫切地想去一探究竟。這篇文章就將為大家介紹如何用Python找回撤回的微信信息,感興趣的可以試一試
    2022-01-01
  • 最新評(píng)論