婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python基礎之操作MySQL數據庫

Python基礎之操作MySQL數據庫

熱門標簽:電信營業廳400電話申請 幫人做地圖標注收費算詐騙嗎 遼寧400電話辦理多少錢 溫州旅游地圖標注 荊州云電銷機器人供應商 蘇州電銷機器人十大排行榜 外呼不封號系統 悟空智電銷機器人6 江蘇房產電銷機器人廠家

一、數據庫操作

1.1 安裝PyMySQL

pip install PyMySQL

1.2 連接數據庫

python連接test數據庫

import pymysql

host = 'localhost'      # 主機地址
username = 'root'       # 數據庫用戶名
password = ''           # 數據庫密碼
db_name = 'test'        # 數據庫名稱

# 創建connect對象
connect = pymysql.connect(host=host, user=username, password=password, database=db_name)

# 獲取游標對象
cursor = connect.cursor()

# 查詢數據庫版本
cursor.execute('SELECT VERSION()')

# 從查詢結果集中獲取下一行數據,返回值為一個值的序列
result = cursor.fetchone()

# 打印結果
print(result)

# 關閉游標
cursor.close()

# 關閉數據庫連接
connect.close()

執行結果:
('10.4.17-MariaDB',)

1.3 創建數據表

創建一個默認編碼格式為utf8的數據表users

id:int類型,不能為空,有自增屬性,主鍵約束

name:varchar類型,長度最多為10字符,可以為空

age:int類型,可以為空

import pprint
import pymysql

host = 'localhost'      # 主機地址
username = 'root'       # 數據庫用戶名
password = ''           # 數據庫密碼
db_name = 'test'        # 數據庫名稱

# 創建connect對象
connect = pymysql.connect(host=host, user=username, password=password, database=db_name)

# 獲取游標對象
cursor = connect.cursor()

# 創建數據表的SQL命令
create_sql = '''
CREATE TABLE `users`(
    `id` INT NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(10) NULL,
    `age` INT NULL,
    PRIMARY KEY (`id`))
    DEFAULT CHARACTER SET = utf8;
'''
# 創建數據表
cursor.execute(create_sql)

# 查詢我們創建的數據表的結構
cursor.execute('DESC users')

# 從查詢結果中獲取結果的所有(或者剩余)行數據,返回值為包含序列的序列(例如元組序列)
result = cursor.fetchall()

# 打印結果
pprint.pprint(result)

# 關閉游標
cursor.close()

# 關閉數據庫連接
connect.close()

執行結果:
(('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'),
 ('name', 'varchar(10)', 'YES', '', None, ''),
 ('age', 'int(11)', 'YES', '', None, ''))

1.4 插入,查詢數據

插入3行數據:

id:1,name:路飛,age:18
id:2,name:娜美,age:19
id:3,name:索隆,age:20

import pprint
import pymysql

host = 'localhost'      # 主機地址
username = 'root'       # 數據庫用戶名
password = ''           # 數據庫密碼
db_name = 'test'        # 數據庫名稱

# 創建connect對象,插入中文時需要指定編碼格式
connect = pymysql.connect(host=host, user=username, password=password, database=db_name, charset='utf8')

# 獲取游標對象查詢返回字典
cursor = connect.cursor(pymysql.cursors.DictCursor)

# 插入數據的SQL命令
insert_sql = '''
INSERT INTO users (id, name, age)
    VALUES (1, '路飛', 18),(2, '娜美', 19),(3, '索隆', 20)
'''

try:
    # 插入數據到數據表
    cursor.execute(insert_sql)
    # 提交任何掛起的事務到數據庫
    connect.commit()
except Exception as e:
    # 發送數據回滾,回滾到事務開始時的狀態
    connect.rollback()

# 查詢數據
cursor.execute('SELECT * FROM users')

# 只返回一行數據
# result_one = cursor.fetchone()
# print('---fetchone---')
# pprint.pprint(result_one)

# 返回全部數據
result_all = cursor.fetchall()
print('---fetchall---')
pprint.pprint(result_all)

# 關閉游標
cursor.close()

# 關閉數據庫連接
connect.close()

執行結果:
---fetchall---
[{'age': 18, 'id': 1, 'name': '路飛'},
 {'age': 19, 'id': 2, 'name': '娜美'},
 {'age': 20, 'id': 3, 'name': '索隆'}]

1.5 更新,查詢數據

更新數據id:3,name:山治,age:21

import pprint
import pymysql

host = 'localhost'      # 主機地址
username = 'root'       # 數據庫用戶名
password = ''           # 數據庫密碼
db_name = 'test'        # 數據庫名稱

# 創建connect對象,插入中文時需要指定編碼格式
connect = pymysql.connect(host=host, user=username, password=password, database=db_name, charset='utf8')

# 獲取游標對象查詢返回字典
cursor = connect.cursor(pymysql.cursors.DictCursor)

# 查詢數據
cursor.execute('SELECT * FROM users')

# 返回更新前全部數據
result_all = cursor.fetchall()
print('---更新前---')
pprint.pprint(result_all)

# 更新數據的SQL命令
update_sql = '''
	UPDATE users SET name = '山治',age = 21 WHERE id = 3
'''

try:
    # 更新數據到數據表
    cursor.execute(update_sql)
    # 提交任何掛起的事務到數據庫
    connect.commit()
except Exception as e:
    # 發送數據回滾,回滾到事務開始時的狀態
    connect.rollback()

# 查詢數據
cursor.execute('SELECT * FROM users')

# 返回更新后全部數據
result_all = cursor.fetchall()
print('---更新后---')
pprint.pprint(result_all)

# 關閉游標
cursor.close()

# 關閉數據庫連接
connect.close()

執行結果:
---更新前---
[{'age': 18, 'id': 1, 'name': '路飛'},
 {'age': 19, 'id': 2, 'name': '娜美'},
 {'age': 20, 'id': 3, 'name': '索隆'}]
---更新后---
[{'age': 18, 'id': 1, 'name': '路飛'},
 {'age': 19, 'id': 2, 'name': '娜美'},
 {'age': 21, 'id': 3, 'name': '山治'}]

1.6 刪除,查詢數據

刪除'age': 19, 'id': 2, 'name': '娜美'該行數據

import pprint
import pymysql

host = 'localhost'      # 主機地址
username = 'root'       # 數據庫用戶名
password = ''           # 數據庫密碼
db_name = 'test'        # 數據庫名稱

# 創建connect對象,插入中文時需要指定編碼格式
connect = pymysql.connect(host=host, user=username, password=password, database=db_name, charset='utf8')

# 獲取游標對象查詢返回字典
cursor = connect.cursor(pymysql.cursors.DictCursor)

# 查詢數據
cursor.execute('SELECT * FROM users')

# 返回刪除前全部數據
result_all = cursor.fetchall()
print('---刪除前---')
pprint.pprint(result_all)

# 刪除數據的SQL命令
update_sql = '''
	DELETE FROM users WHERE id = 2
'''

try:
    # 刪除數據表的數據
    cursor.execute(update_sql)
    # 提交任何掛起的事務到數據庫
    connect.commit()
except Exception as e:
    # 發送數據回滾,回滾到事務開始時的狀態
    connect.rollback()

# 查詢數據
cursor.execute('SELECT * FROM users')

# 返回刪除后全部數據
result_all = cursor.fetchall()
print('---刪除后---')
pprint.pprint(result_all)

# 關閉游標
cursor.close()

# 關閉數據庫連接
connect.close()

執行結果:
---刪除前---
[{'age': 18, 'id': 1, 'name': '路飛'},
 {'age': 19, 'id': 2, 'name': '娜美'},
 {'age': 21, 'id': 3, 'name': '山治'}]
---刪除后---
[{'age': 18, 'id': 1, 'name': '路飛'}, {'age': 21, 'id': 3, 'name': '山治'}]

二、連接與游標對象的方法

2.1 連接對象的方法

  • .close()方法:

馬上關閉數據連接(而不是當__del__方法被調用的時候)。此后連接變得不可用,再次訪問本連接對象會觸發一個錯誤,使用本連接對象的游標對象,也會導致例外發生。在關閉連接對象之前,沒有提交(commit)對數據庫的改變將會導致一個隱含的回滾動作(rollback),這將丟棄之前的數據改變操作。

  • .commit()方法:

提交任何掛起的事務到數據庫中。

  • .rollback()方法:

對于支持事務的數據庫。調用此方法將導致數據庫回滾到事務開始時的狀態。

  • .cursor()方法:

方法返回給定連接上建立的游標對象(Cursor Object),如果數據庫沒有提供對應的游標對象,那么有程序來模擬實現游標功能。

2.2 游標對象的方法

  • .close()方法:

立即關閉游標(不論__del__方法是否已被調用),此后游標對象就變得不可用了。

  • .execute(operation[,parameters])方法:

準備和執行數據庫操作。所提供的參數將會被綁定到語句中的變量,變量的定義和數據庫模塊有關。

  • .executemany(operation,seq_of_parameters)方法:

準備和執行數據庫操作,然后以序列形式的函數來執行該操作。

  • .fetchone()方法:

從查詢結果中獲取下一行數據,返回值為一個值的序列,如果沒有更多數據則返回None。

  • .fetchmany([size=cursor.arraysize])方法:

從查詢結果中獲取下一組行數據,返回值為包含序列的序列,如果沒有數據返回時,則返回空序列。每次調用要獲取的行數由參數指定,如果沒有指定行數,則游標的arraysize屬性決定要獲取的行數。

  • .fetchall()方法:

從查詢結果中獲取所有(或者剩余)行數據,返回值為包含序列的序列。

  • .nextset()方法:

此方法將游標跳到下一個可用的結果集并丟棄當前結果集的所有行,如果沒有更有查詢結果集則返回None,否則返回True,接下來的fetch操作將會從新結果集返回數據了。

  • .setinputsizes(sizes)方法:

此方法可用在調用.execute系列方法之前使用,用于預定義內存區域。size參數接收一個序列類型的值,每一個元素對應一個輸入參數,該元素應該是一個類型對象,對于將要使用的參數,或者是一個整數,用于指定字符串的最大長度。如果元素是None,則沒有預定義的內存區域作為保留區域。

  • .setoutputsize(size[,column])方法:

為一個很大的列設置緩沖區大小,不指定將使用默認大小。

三、事務

事務是數據庫管理系統執行過程中的一個邏輯單位,由一個有限的數據庫操作序列構成,事務的目的性是為了保證數據的一致性。假設銀行轉賬操作,從A賬戶轉賬100元到B賬戶需要進行至少兩次的數據庫修改操作,A賬戶余額需要減少100元,B賬戶余額需要增加100元,如果因為由于外部原因導致程序意外終止,就會操作數據出錯,事務就是防止此情況的發生。

數據庫事務擁有四個特性,習慣稱之為ACID特性:

1、原子性(Atomicity):事務作為一個整體被執行,包含在其中的對數據庫的操作要么全部被執行,要么不執行。
2、一致性(Consistency):事務應確保數據庫的狀態從一個一致狀態轉變為另一個一致狀態,一致狀態的含義是數據庫中的數據應滿足完整性約束。
3、隔離性(Isolation):多個事務并發執行時,一個事務的執行不應影響其他事務的執行。
4、持久性(Durability):已被提交的事務對數據庫的修改應該永久保存在數據庫中。

import pprint
import pymysql

host = 'localhost'      # 主機地址
username = 'root'       # 數據庫用戶名
password = ''           # 數據庫密碼
db_name = 'test'        # 數據庫名稱

# 創建connect對象,插入中文時需要指定編碼格式
connect = pymysql.connect(host=host, user=username, password=password, database=db_name, charset='utf8')

# 獲取游標對象查詢返回字典
cursor = connect.cursor(pymysql.cursors.DictCursor)

# 正確的插入數據的SQL命令
insert_sql1 = '''
INSERT INTO users (name, age)
    VALUES ('羅賓', 18),('喬巴', 16)
'''

# 錯誤的插入數據的SQL命令
insert_sql2 = '''
INSERT INTO users (name, age)
    VALUES ('弗蘭奇')
'''

try:
    # 插入數據到數據表
    cursor.execute(insert_sql1)
    cursor.execute(insert_sql2)
    # 提交任何掛起的事務到數據庫
    connect.commit()
except Exception as e:
    # 執行失敗發送數據回滾,回滾到事務開始時的狀態
    connect.rollback()

# 查詢數據
cursor.execute('SELECT * FROM users')

# 返回全部數據
result_all = cursor.fetchall()
print('---fetchall---')
pprint.pprint(result_all)

# 關閉游標
cursor.close()

# 關閉數據庫連接
connect.close()

上例中執行了兩條SQL語句,一條正確的一條錯誤的,只要有一個錯誤,兩條都不會生效,rollback方法會回滾當前游標的所有操作。

到此這篇關于Python基礎之操作MySQL數據庫的文章就介紹到這了,更多相關Python操作MySQL內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • MYSQL數據庫基礎之Join操作原理
  • MySQL系列之開篇 MySQL關系型數據庫基礎概念
  • Mysql數據庫索引面試題(程序員基礎技能)
  • MySql數據庫基礎知識點總結
  • 一篇文章帶你了解MySQL數據庫基礎

標簽:景德鎮 黃山 濟南 三沙 宿遷 欽州 喀什 臺灣

巨人網絡通訊聲明:本文標題《Python基礎之操作MySQL數據庫》,本文關鍵詞  Python,基礎,之,操作,MySQL,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python基礎之操作MySQL數據庫》相關的同類信息!
  • 本頁收集關于Python基礎之操作MySQL數據庫的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产一区二区伦理片| 色诱视频网站一区| 国产免费成人在线视频| 在线一区二区观看| 国产一区二区在线影院| 欧美激情一区二区三区蜜桃视频 | 不卡一二三区首页| 婷婷成人综合网| 欧美一二三在线| 欧美日韩国产一级片| 91色九色蝌蚪| 久久一区二区三区四区| 国产成人免费xxxxxxxx| 国产一区二区三区国产| 久久66热偷产精品| 韩国一区二区三区| 欧美精品在线观看播放| 亚洲午夜免费视频| 色综合久久久久综合99| 国产综合色产在线精品| 天天色 色综合| 美女一区二区在线观看| 日韩精品成人一区二区在线| 亚洲成人自拍偷拍| 一区二区三区成人| 亚洲国产成人av网| 亚洲福利视频一区| 亚洲欧美日韩久久| 亚洲免费电影在线| 久久成人综合网| 精品一区二区免费| 国产91精品在线观看| 成人app在线| 91.xcao| 久久嫩草精品久久久久| 亚洲综合无码一区二区| 欧美妇女性影城| 久久久99精品免费观看不卡| 国产精品国产三级国产| 亚洲欧美一区二区久久| 日韩精品福利网| 免费成人在线观看| 秋霞午夜鲁丝一区二区老狼| 国产sm精品调教视频网站| 色婷婷久久久亚洲一区二区三区| 欧美日韩精品二区第二页| 国产三级精品视频| 亚洲国产另类av| 成人爱爱电影网址| 国产婷婷一区二区| 在线播放中文字幕一区| 中文久久乱码一区二区| 麻豆成人免费电影| 欧美日韩一级二级| 亚洲一区二区三区在线播放| av电影天堂一区二区在线观看| 欧美二区三区91| 亚洲福中文字幕伊人影院| 91在线码无精品| 色乱码一区二区三区88| 久久久久国产精品厨房| 一区二区三区视频在线观看| 成人自拍视频在线观看| 国产欧美日韩一区二区三区在线观看 | 欧美综合久久久| 国产精品成人网| 成人视屏免费看| 国产精品视频观看| www.亚洲免费av| 亚洲精品乱码久久久久久| 日韩你懂的在线播放| 91视频com| 久久综合久久综合九色| 一区二区三区在线观看欧美| 国产乱码精品1区2区3区| 国产欧美va欧美不卡在线| aaa国产一区| 精品在线观看视频| 中文字幕不卡一区| av不卡在线播放| 91精品国产色综合久久ai换脸 | 伊人夜夜躁av伊人久久| 7777女厕盗摄久久久| 国产电影一区在线| 香蕉加勒比综合久久| 国产精品免费视频一区| 91婷婷韩国欧美一区二区| 日产欧产美韩系列久久99| 蜜桃视频在线一区| 91网站最新地址| 久久久久久久久久久久电影| 日韩高清不卡一区二区三区| 色婷婷久久一区二区三区麻豆| 99这里只有精品| 亚洲女女做受ⅹxx高潮| 成人午夜av电影| 亚洲精品自拍动漫在线| 欧美精品日韩一本| 色综合亚洲欧洲| 亚洲v中文字幕| 色狠狠av一区二区三区| 国产欧美视频在线观看| 99re6这里只有精品视频在线观看| 亚洲色图视频网| 日本乱码高清不卡字幕| 青草av.久久免费一区| 欧美一区二区三区不卡| 奇米精品一区二区三区在线观看一| 一区二区三区欧美日| 日韩国产高清在线| 肉丝袜脚交视频一区二区| 欧美日韩在线播放一区| 激情国产一区二区| 国产精品久久久久婷婷| 欧美综合一区二区| 6080亚洲精品一区二区| 国产不卡在线一区| 欧美综合视频在线观看| 国产精品一级黄| 日韩精品福利网| 久久精品一二三| 欧美一区二区精品在线| 在线一区二区三区做爰视频网站| 亚洲精选在线视频| 日韩一区在线看| 日韩一区二区三| 欧美日韩精品系列| 欧美日韩精品三区| 日韩免费观看高清完整版| 欧美一区二区网站| 欧美videossexotv100| 欧美成人女星排行榜| 亚洲成人黄色小说| 制服丝袜日韩国产| 欧美日韩一区小说| 精品欧美黑人一区二区三区| 日韩欧美不卡在线观看视频| 99视频一区二区| 色一情一伦一子一伦一区| 99r精品视频| 欧美日韩国产大片| 日韩一区二区三区四区五区六区| 国产高清一区日本| 91久久国产最好的精华液| 在线观看欧美黄色| 精品av久久707| 亚洲观看高清完整版在线观看| 激情六月婷婷综合| 在线播放欧美女士性生活| 久久综合色天天久久综合图片| 国产亚洲精品aa午夜观看| 亚洲精品中文在线| 懂色av噜噜一区二区三区av| 成人18视频在线播放| 7878成人国产在线观看| 久久久一区二区三区捆绑**| 综合欧美亚洲日本| 色综合久久88色综合天天免费| 国产精品久久久久久久久果冻传媒| 美国毛片一区二区| 欧美成人一区二区三区片免费| 三级久久三级久久| 精品蜜桃在线看| 国产自产2019最新不卡| 欧美国产日韩精品免费观看| 国产成人av影院| 久久99国产精品久久99| 欧美妇女性影城| 美美哒免费高清在线观看视频一区二区 | 自拍偷在线精品自拍偷无码专区| 蜜臀av性久久久久蜜臀av麻豆| 51久久夜色精品国产麻豆| 亚洲va国产天堂va久久en| 日韩欧美精品在线| 国产91精品欧美| 一区二区三区资源| 精品国产乱码久久久久久1区2区| 国产精品18久久久久久久久| 国产精品久久精品日日| 欧美性受xxxx黑人xyx性爽| 精品一区二区三区久久久| 国产清纯美女被跳蛋高潮一区二区久久w| 粉嫩嫩av羞羞动漫久久久| 亚洲综合激情网| 中文字幕亚洲区| 日韩一级片网站| 色婷婷综合久久久中文字幕| 久久精品国产久精国产爱| 最新久久zyz资源站| 欧美精品久久天天躁| 色婷婷亚洲精品| voyeur盗摄精品| 99re这里只有精品首页| 精彩视频一区二区三区| 亚洲成人777| 亚洲福利一二三区| 精品日产卡一卡二卡麻豆| 欧美乱熟臀69xxxxxx| 欧美高清视频不卡网| 91麻豆精品国产91久久久久久 |