關于sqlalchemy的使用

關于sqlalchemy的使用

  • 說明
  • 一、sqlachemy總體使用思路
  • 二、安裝與創建庫、連結庫
  • 三、創建表、增加數據
  • 四、查詢記錄
  • 五、更新或刪除
  • 六、關聯表定義

說明

  1. 本教程所需軟件及庫python3.10、sqlalchemy
  2. 安裝與創建庫、連結庫
  3. 創建表、增加數據
  4. 查詢記錄

一、sqlachemy總體使用思路

  1. 在創建或連結后會返回engine(可以參考第二節安裝與創建庫、連結庫)
  2. 在創建表后會返回一個表名(可以參考第三節創建表、增加數據)
  3. 使用時表名.方法.屬性
  4. 方法有insert,select,update,delecte
  5. 與數據對接時,conn = engine.connect()—conn.execut(表方法返回的值)
  6. 當數據庫的數據發生改變時,要提交(conn.commit())
  7. 查詢時,要注意條件,有兩種方法where() | or_ | and_

二、安裝與創建庫、連結庫

  1. 安裝庫
pip install sqlalchemy
#查看版本
sqlalchemy.__vetrsion__
  1. 創建庫或連結庫
#連結或創建sqlite3
from sqlalchemy import create_engine
engine = create_engine(`sqlite:///db_path.db`,echo=True)
conn = engine.connect()
#連結或創建mysql
from sqlalchemy import create_engine
engine = create_engine(`mysql://user:pwd@localhoast/庫名`,echo=True)
conn = engine.connect()

注:create_engine如果已經存在就連結,如果不存在就創建。

  1. 在sqlachemy執行sql語句
import sqlachemy
query = sqlachemy.text("select * from 表名")#sql語句
engine = sqlachemy.create_engine(`sqlite:///db_path.db`,echo=True)
conn = engine.connect()
result_set = conn.execute(query)
print(result_set.all())
conn.close()
engine.dispose()

注:以下代碼engine代表創建或檢查數據庫,conn代表連結數據庫。

三、創建表、增加數據

  1. 創建表
    創建表要用到sqlalchemy的三個庫MetaData、Table、Column及類型代碼
from sqlachemy import MetaData,Table,Column
meta = MetaData()
#Meta定義好的字段屬性存在這,所以第二個字段就要傳它
var = Table(
'表名',meta,
Clolumn('字段名',sqlachemy.類型,primary_key=True),
.......
)
meta.create_all(engine)#創建表

如果表已經存在了,就不會創建,如果不存在就創建。
2. sqlachemy字段類型

名稱字段英文用法說明
整形IntegerInteger存整數
小數存小數
字符StringString(字符個數)存字符
日期DateDate存年月日

注:主鍵primary_key=True,unique=True唯一,unllable=True不能為空。

  1. 增加數據(insert)
    3.1 插入一條數據
var = 表名.insert().values(字段名=值,......)
with engine.connect() as conn:conn.execute(var)conn.commit()

1、連結conn以后執行數據庫操作要用conn.execut(sqlachemy語句)
2、數據庫數據有變要提交事務,conn.commit()
3、var = 表名.insert().values(字段名=值,…)是新增數據的sqlachemy語句
4、 自增長是插一次,它就增加一次,它不管你是否成功
3.2 插入多條數據

var = 表名.insert()
with engine.connect() as conn:conn.execute(var,[{'字段名':value,.......},{'字段名':value,.......},........])conn.commit()

這個要用列表,并且列表里放字典,key是字段名,value是對應的值

四、查詢記錄

  1. sql查詢語句
select * from 表名
  1. 函數表達式
表名.select()
  1. 結果獲取
結果.fetchall()#獲取所有數據
結果.fetchone()#獲取第一條數據
  1. 條件查詢
表名.select().where(表名.c.字段名條件)
#一次只能有一個條件
#如果多個條件查詢時,在后面加.where(表名.c.字段名條件)
  1. and_(與)、or_(或)
from sqlachemy.sql import and_,or_
表名.select().where(or_(條件,條件.....) | and_(條件,條件.....))
# 要在where中使用and_,or_
# and_,or_可以相互嵌套

五、更新或刪除

  1. 更新
表名.update().where(條件).values(字段名=value)
#查詢結果后再更新值,一個values可以更新多條記錄或所有記錄,取決于查詢的結果
  1. 刪除
表名.delete().where(條件)
#查詢結果后再刪除,可以刪除多條記錄或所有記錄,取決于查詢的結果

六、關聯表定義

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72728.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72728.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72728.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

在 IntelliJ IDEA 中使用 JUnit 進行單元測試

1. 介紹 JUnit JUnit 是 Java 語言中最流行的單元測試框架之一。它基于 xUnit 設計模式,支持 測試自動化、斷言(Assertions)和測試生命周期管理,是 Java 開發中進行 TDD(測試驅動開發) 的重要工具。 JUni…

單片機的發展

一、引言 單片機自誕生以來,經歷了四十多年的風風雨雨,從最初的工業控制逐步擴展到家電、通信、智能家居等各個領域。其發展過程就像是一場精彩的冒險,每一次技術的革新都像是在未知的海域中開辟新的航線。 二、單片機的發展歷程 &#xff…

常見的博弈模型有哪些

常見的博弈模型有哪些 目錄 常見的博弈模型有哪些**1. 重復博弈(Repeated Game)****2. 進化博弈論(Evolutionary Game Theory)****3. 機制設計(Mechanism Design)****4. 微分博弈(Differential Game)****5. 貝葉斯博弈(Bayesian Game)****6. 合作博弈(Cooperative G…

【MySQL-數據類型】數據類型分類+數值類型+文本、二進制類型+String類型

一、數據類型分類 二、數值類型 1.bit類型 測試環境ubuntu 基本語法: bit[(M)]:位字段類型,M表示每個值的位數,范圍從1~64;如果M被忽略,默認為1舉例: create table testBit(id i…

golang從入門到做牛馬:第一篇-我與golang的緣分,go語言簡介

還記得2018年的夏天,剛畢業的我不知道該做些什么,于是自學了一周的go語言,想要找一份go語言工作的代碼,當時的go還沒有go mod來管理依賴包,在北京找了一個月的工作,找到了一個小公司做了后端開發,當然使用go語言開發,帶著興奮勁,年輕身體也好,邊努力學習,邊工作。 時…

【數據庫】MySQL常見聚合查詢詳解

在數據庫操作中,聚合查詢是非常重要的一部分。通過聚合查詢,我們可以對數據進行匯總、統計和分析。MySQL提供了豐富的聚合函數來滿足不同的需求。本文將詳細介紹MySQL中常見的40個聚合函數及其使用場景,并通過8個的案例展示它們的用法。 一、…

調研:如何實現智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)

文章目錄 調研:如何實現智能分析助手(Agent)(AutoCoder、FastGPT、AutoGen、DataCopilot)一、交互流程二、數據流程三、架構分類四、開源產品4.1 AutoCoder(知識庫變體)4.2 FastGPT(…

【Vue CLI腳手架開發】——6.scoped樣式

文章目錄 一、scoped是什么二、應用案例1.使用代碼2.原理3父組件App未添加scoped影響 一、scoped是什么 我們知道vue為了防止css樣式污染&#xff0c;在每個組件中提供了 scoped屬性進行限定css作用域&#xff1b;當<style>標簽有 scoped 屬性時&#xff0c;它的 CSS 只…

高精算法的用法及其優勢

高精度問題是指當數據的位數非常大&#xff08;超出標準數據類型的范圍&#xff09;時&#xff0c;如何進行計算和存儲的問題。常見場景包括大整數的加、減、乘、除、取模等操作。以下是解決高精度問題的常用方法與技巧&#xff1a; 一、數據存儲 數組存儲 用整型數組存儲&am…

VM+CentOS虛擬機

關于VMCentOS虛擬機的配置和使用&#xff0c;可以參考以下博客中的詳細教程&#xff1a; **一、VMCentOS虛擬機配置** 1. **虛擬機網絡配置** - 在VMware中&#xff0c;點擊“編輯”→“虛擬網絡編輯器”&#xff0c;選擇VMnet8并進行相關設置。 - 子網IP可以改成如192.168.1…

設置 CursorRules 規則

為什么要設置CursorRules&#xff1f; 設置 CursorRules 可以幫助優化代碼生成和開發流程&#xff0c;提升工作效率。具體的好處包括&#xff1a; 1、自動化代碼生成 &#xff1a;通過定義規則&#xff0c;Cursor 可以根據你的開發需求自動生成符合規定的代碼模板&#xff0c…

pip install速度太慢的多種解決方案

目錄 問題描述為什么 pip 速度這么慢&#xff1f;解決方案1. 使用國內鏡像源2. 配置多個鏡像源3. 使用第三方工具4. 手動下載后本地安裝5. 優化網絡環境6. 更新 pip 版本 測試效果 問題描述 在使用 Python 進行開發時&#xff0c;我們經常需要使用 pip 來安裝第三方庫。然而&am…

Java阻塞隊列深度解析:高并發場景下的安全衛士

一、阻塞隊列的核心價值 在電商秒殺系統中&#xff0c;瞬時涌入的10萬請求如果直接沖擊數據庫&#xff0c;必然導致系統崩潰。阻塞隊列如同一個智能緩沖帶&#xff0c;通過流量削峰和異步解耦兩大核心能力&#xff0c;成為高并發系統的核心組件。 二、Java阻塞隊列實現類對比 …

基于RapidOCR與DeepSeek的智能表格轉換技術實踐

基于RapidOCR與DeepSeek的智能表格轉換技術實踐 一、技術背景與需求場景 在金融分析、數據報表處理等領域&#xff0c;存在大量圖片格式的表格數據需要結構化處理。本文介紹基于開源RapidOCR表格識別與DeepSeek大模型的智能轉換方案&#xff0c;實現以下典型場景&#xff1a; …

django中視圖作用和視圖功能 以及用法

在 Django REST Framework(DRF)中,視圖(View)是處理 HTTP 請求并返回響應的核心組件。DRF 提供了多種視圖類,適用于不同的場景和需求。以下是 DRF 中常見的視圖類及其作用、使用方法的詳細說明: 一、DRF 視圖的分類 DRF 的視圖可以分為以下幾類: 基于函數的視圖(Func…

希音(Shein)前端開發面試題集錦和參考答案

用 Node 寫過什么工具或 npm 包 在實際開發中,使用 Node 編寫過多種實用工具和 npm 包。 自動化構建工具 開發了一個簡單的自動化構建工具,用于處理前端項目的資源壓縮和合并。在前端項目中,為了優化性能,需要對 CSS 和 JavaScript 文件進行壓縮,減少文件體積,同時將多個…

C語言100天練習題【記錄本】

C語言經典100題&#xff08;手把手 編程&#xff09; 可以在嗶哩嗶哩找到 已解決的天數&#xff1a;一&#xff0c;二&#xff0c;五&#xff0c;六 下面的都是模模糊糊的 可以學學這些算法&#xff0c;我是算法白癡&#xff0c;但是我不是白癡&#xff0c;可以學&#xff…

迷你世界腳本文字板接口:Graphics

文字板接口&#xff1a;Graphics 彼得兔 更新時間: 2024-08-27 11:12:18 具體函數名及描述如下: 序號 函數名 函數描述 1 makeGraphicsText(...) 創建文字板信息 2 makeflotageText(...) 創建漂浮文字信息 3 makeGraphicsProgress(...) 創建進度條信息…

Crawl4AI: 賦能AI用戶的開源智能網頁爬蟲與數據提取

Crawl4AI: 賦能AI用戶的開源智能網頁爬蟲與數據提取 在當今人工智能時代&#xff0c;網絡爬蟲扮演著至關重要的角色。它們不僅是數據收集的強大工具&#xff0c;更是驅動機器學習、自然語言處理等技術發展的關鍵引擎。 然而&#xff0c;對于用戶來說&#xff0c;在面對復雜多…

下載b站視頻音頻

文章目錄 方案一&#xff1a;jjdown如何使用 方案二&#xff1a;bilibili嗶哩嗶哩下載助手如何使用進入插件網站插件下載插件安裝 使用插件下載視頻音頻&#xff1a;復制音頻下載地址 方案三&#xff1a;bat命令下載單個音頻下載單個視頻下載單個音視頻 方案一&#xff1a;jjdo…