Python與數(shù)據(jù)庫(kù)的交互問(wèn)題小結(jié)
MongoDB
安裝模塊pip install pymongo
連接數(shù)據(jù)庫(kù)
import pymongo client = pymongo.MongoClient() db = client["database_name"] # 跟上數(shù)據(jù)庫(kù)名 collection = db["set_name"] # 指定集合名
增刪改查
添加--->insert_one | insert_many
collection.insert_one({"name":"kongshang","age":12})
查找--->find | find_one
collection.find()
注意要用list轉(zhuǎn)換得到的數(shù)據(jù)
修改--->update_one | update_many
collection.update_one({"name":"kongshang"},{'$set':{"age":13}})
刪除--->delete_one | delete_many
collection.delete_one({"name":"kongshang"})
封裝
import pymongo
class MyMonDB:
def __init__(self, database, collection): # 數(shù)據(jù)庫(kù)及集合
self.client = pymongo.MongoClient() # 連接數(shù)據(jù)庫(kù)使用
self.db = self.client[database] # 指定使用的數(shù)據(jù)庫(kù)
self.col = self.db[collection] # 指定使用的集合
def insert(self, data, onlyOne=True): # onlyOne用來(lái)控制插入單條還是多條數(shù)據(jù)
if onlyOne:
self.col.insert_one(data)
else:
self.col.insert_many(data)
def find(self, query=None, onlyOne=True): # query是查詢(xún)條件
if onlyOne:
ret = self.col.find_one(query)
return ret
else:
ret = self.col.find(query)
return list(ret)
def update(self, data_old, data_new, onlyOne=True):
if onlyOne:
self.col.update_one(data_old, {"$set": data_new})
else:
self.col.update_many(data_old, {"$set": data_new})
def delete(self, data, onlyOne=True):
if onlyOne:
self.col.delete_one(data)
else:
self.col.delete_many(data)
注意該數(shù)據(jù)庫(kù)對(duì)大小寫(xiě)敏感
MySQL
安裝模塊pip install pymysql
連接數(shù)據(jù)庫(kù)
import pymysql
# 連接mysql
db_config = {
"host": "127.0.0.1",
"port": 3306,
"user": "admin",
"password": "qwe123",
"db": "stu", # 指定操作的數(shù)據(jù)庫(kù)
"charset": "utf8"
}
conn = pymysql.connect(**db_config) # mysql登錄 **是字典拆包
print(conn)
執(zhí)行操作
cur = conn.cursor() # 返回一個(gè)執(zhí)行數(shù)據(jù)庫(kù)命令游標(biāo)對(duì)象,通過(guò)游標(biāo)對(duì)象執(zhí)行SQL命令
cur.execute("INSERT INTO stu (id, name) VALUES (1, 'nihao'),(2, 'ci')") # 執(zhí)行SQL命令執(zhí)行插入命令
conn.commit() # 事務(wù),提交保存
cur.close() # 關(guān)閉游標(biāo)對(duì)象
conn.close() # 關(guān)閉數(shù)據(jù)庫(kù)
查詢(xún)數(shù)據(jù)
cur.execute("SELECT * FROM stu") # 執(zhí)行SQL命令
# print(list(cur))
# print(cur.fetchone()) # 查詢(xún)單條
# print(cur.fetchmany(3)) # 查詢(xún)多條
print(cur.fetchall()) # 查詢(xún)所有
異常處理
try:
cur.execute("INSERT INTO stu (id, name) VALUES (1, 'nihao'), (2, 'ci')")
except Exception as e:
print(e)
conn.rollback() # 事務(wù)回滾
else:
conn.commit() # 事務(wù)提交
finally:
cur.close() # 關(guān)閉游標(biāo)對(duì)象
conn.close() # 關(guān)閉數(shù)據(jù)庫(kù)
Redis
安裝模塊pip install redis
連接數(shù)據(jù)庫(kù)
import redis # 登錄數(shù)據(jù)庫(kù) # host ip地址 # decode_responses get獲得鍵值時(shí) True返回字符串?dāng)?shù)據(jù),默認(rèn)是False二進(jìn)制數(shù)據(jù) # db 指定數(shù)據(jù)庫(kù),默認(rèn)為1 red = redis.StrictRedis(host="127.0.0.1", decode_responses=True, db=2)
執(zhí)行操作
# 字符串
red.set("num", 1)
print(red.get("num"))
print(red.type("num"))
red.delete('num')
# 綜上,調(diào)用Redis數(shù)據(jù)庫(kù)的方法是red.[輸入redis數(shù)據(jù)庫(kù)操作命令]()
到此這篇關(guān)于Python與數(shù)據(jù)庫(kù)的交互的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)庫(kù)交互內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中高效的json對(duì)比庫(kù)deepdiff詳解
- python處理json文件的四個(gè)常用函數(shù)
- 使用python如何提取JSON數(shù)據(jù)指定內(nèi)容
- python如何讀取和存儲(chǔ)dict()與.json格式文件
- 利用python實(shí)現(xiàn)JSON文檔與Python對(duì)象互相轉(zhuǎn)換
- python+html實(shí)現(xiàn)前后端數(shù)據(jù)交互界面顯示的全過(guò)程
- python tkinter與Mysql數(shù)據(jù)庫(kù)交互實(shí)現(xiàn)賬號(hào)登陸
- python實(shí)現(xiàn)與Oracle數(shù)據(jù)庫(kù)交互操作示例
- python 如何用urllib與服務(wù)端交互(發(fā)送和接收數(shù)據(jù))
- python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5中QWebEngineView內(nèi)嵌網(wǎng)頁(yè)與Python的數(shù)據(jù)交互傳參詳細(xì)方法實(shí)例
- python與json數(shù)據(jù)的交互詳情
相關(guān)文章
使用 pytorch 創(chuàng)建神經(jīng)網(wǎng)絡(luò)擬合sin函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了使用 pytorch 創(chuàng)建神經(jīng)網(wǎng)絡(luò)擬合sin函數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02
python進(jìn)行圖片相似度對(duì)比的兩種實(shí)現(xiàn)方法
Python提供了一些庫(kù)和工具可以用于圖片的相似度比對(duì),本文就詳細(xì)的介紹了兩種實(shí)現(xiàn)方法,感知哈希和結(jié)構(gòu)相似性,下面就來(lái)介紹一下,感興趣的可以了解一下2023-10-10
在macOS上搭建python環(huán)境的實(shí)現(xiàn)方法
今天小編就為大家分享一篇在macOS上搭建python環(huán)境的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python中OpenCV?Tutorials?20??高動(dòng)態(tài)范圍成像的實(shí)現(xiàn)步驟
這篇文章主要介紹了OpenCV?Tutorials?20?-?高動(dòng)態(tài)范圍成像,本文還給大家展示了一種稱(chēng)為曝光融合的替代方法,它可以產(chǎn)生低動(dòng)態(tài)范圍的圖像,需要的朋友可以參考下2022-06-06
Ubuntu16安裝Python3.9的實(shí)現(xiàn)步驟
這篇文章主要介紹了Ubuntu16安裝Python3.9的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
pyside6-uic生成py代碼中文為unicode(亂碼)的問(wèn)題解決方案
這篇文章主要介紹了如何解決pyside6-uic生成py代碼中文為unicode(亂碼)的問(wèn)題,文中通過(guò)代碼和圖文介紹的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下2024-02-02
Python+Pygame實(shí)現(xiàn)簡(jiǎn)單的射擊小游戲
要說(shuō)什么游戲能夠獲得大家的喜愛(ài),唯射擊游戲莫屬!本文將利用Python和Pygame庫(kù)制作一個(gè)簡(jiǎn)單的射擊小游戲,感興趣的小伙伴可以了解一下2022-04-04
詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用
這篇文章主要介紹了詳解基于Facecognition+Opencv快速搭建人臉識(shí)別及跟蹤應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Python下的subprocess模塊的入門(mén)指引
這篇文章主要介紹了Python下的subprocess模塊的入門(mén)指引,subprocess模塊被用于Python的多線程編程,需要的朋友可以參考下2015-04-04

