国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SQLite 與 Python,Python項(xiàng)目中充分利用SQLite的綜合指南

SQLite 是一種輕量級(jí)、無服務(wù)器、獨(dú)立的關(guān)系數(shù)據(jù)庫管理系統(tǒng),由于其簡單、高效且占用空間緊湊,在許多應(yīng)用程序中常用。

本綜合指南將探討如何在 Python 項(xiàng)目中充分利用 SQLite 來深入創(chuàng)建、訪問、修改和管理數(shù)據(jù)庫信息。

在 Python 中設(shè)置 SQLite

要在 Python 中使用 SQLite,我們首先需要導(dǎo)入 sqlite3 模塊。這是 Python 內(nèi)置的:

import sqlite3

sqlite3 模塊提供了從 Python 連接、創(chuàng)建 SQLite 數(shù)據(jù)庫并與之交互所需的所有 API 和工具。

要連接到 SQLite 數(shù)據(jù)庫(如果不存在則創(chuàng)建一個(gè)),請(qǐng)使用 sqlite3.connect() 方法:

import sqlite3
db = sqlite3.connect('database.db')

這將打開與數(shù)據(jù)庫文件database.db的連接并返回代表數(shù)據(jù)庫的連接對(duì)象。如果該文件不存在,SQLite 將自動(dòng)創(chuàng)建它。

一旦我們完成與數(shù)據(jù)庫的交互,關(guān)閉連接是一個(gè)很好的做法。這可以通過 close() 方法來完成:

db.close()

創(chuàng)建表

要在 SQLite 中創(chuàng)建表,我們必須執(zhí)行 CREATE TABLE SQL 語句。這是通過首先從數(shù)據(jù)庫連接獲取游標(biāo)對(duì)象來完成的,這使我們能夠執(zhí)行 SQL:

import sqlite3
db = sqlite3.connect('database.db')
cursor = db.cursor()

然后我們可以使用游標(biāo)的execute()方法執(zhí)行CREATE TABLE語句:

cursor.execute("""
  CREATE TABLE inventory (
    id integer PRIMARY KEY,
    name text NOT NULL,
    quantity integer,
    price real
  )
""")

這將創(chuàng)建一個(gè)包含 ID、名稱、數(shù)量和價(jià)格列的庫存表。請(qǐng)注意,我們定義了每列的數(shù)據(jù)類型。

執(zhí)行 SQL 后,必須將更改提交到數(shù)據(jù)庫。這會(huì)保留更改:

db.commit()

讓我們將其放在一個(gè)函數(shù)中來封裝表創(chuàng)建邏輯:

def create_table():
  db = sqlite3.connect('database.db')
  cursor = db.cursor()
  cursor.execute("""
    CREATE TABLE IF NOT EXISTS inventory (
      id integer PRIMARY KEY,
      name text NOT NULL,
      quantity integer,
      price real
    )
  """)
  db.commit()
  db.close()

我們使用 CREATE TABLE IF NOT EXISTS,因此如果表已經(jīng)存在,嘗試再次創(chuàng)建該表不會(huì)導(dǎo)致錯(cuò)誤。

插入數(shù)據(jù)

要將數(shù)據(jù)插入表中,我們可以再次使用execute()方法執(zhí)行SQL語句。SQLite 有一個(gè) INSERT INTO 語句,允許插入新行:

INSERT INTO inventory VALUES (1, 'Bananas', 150, 1.49)

這將插入一個(gè)新行,id 為 1,名稱為 Bananas,數(shù)量為 150,價(jià)格為 1.49。

雖然我們可以使用字符串格式插入數(shù)據(jù),但更好的方法是使用可以安全地將值與查詢分開的查詢參數(shù):

data = (2, 'Oranges', 200, 2.49)
cursor.execute("INSERT INTO inventory VALUES (?, ?, ?, ?)", data)

他們?充當(dāng)值的占位符。這有助于防止 SQL 注入攻擊。

我們可以編寫一個(gè)函數(shù)來插入數(shù)據(jù):

def insert_data(values):
  db = sqlite3.connect('database.db')
  cursor = db.cursor()
  cursor.execute("INSERT INTO inventory VALUES (?, ?, ?, ?)", values)
  db.commit()
  db.close()
# Usage:
insert_data((3, 'Apples', 75, 1.25))

這封裝了插入邏輯,同時(shí)允許我們干凈地將數(shù)據(jù)作為元組傳遞。

查看數(shù)據(jù)

我們可以使用 SELECT 語句從數(shù)據(jù)庫中查詢和獲取數(shù)據(jù)。例如,要獲取所有行:

SELECT * FROM inventory

我們可以執(zhí)行此查詢,然后使用cursor.fetchall()以元組形式檢索結(jié)果集:

def get_all_data():
  db = sqlite3.connect('database.db')
  cursor = db.cursor()
  cursor.execute("SELECT * FROM inventory")
  rows = cursor.fetchall()
  db.close()
  return rows

這將以元組列表的形式返回完整的結(jié)果集,每個(gè)元組代表一行及其值。

我們可以將參數(shù)傳遞給 SELECT 查詢來過濾結(jié)果:

def get_by_name(name):
  db = sqlite3.connect('database.db')
  cursor = db.cursor()
  cursor.execute("SELECT * FROM inventory WHERE name=?", (name,))
  row = cursor.fetchone()  
  db.close()
  return row

這允許我們按名稱檢索特定行。cursor.fetchone() 僅返回第一個(gè)結(jié)果。

更新數(shù)據(jù)

要修改現(xiàn)有數(shù)據(jù),我們可以使用 UPDATE 語句:

UPDATE inventory SET quantity = 200 WHERE name = 'Bananas'

這會(huì)將香蕉的數(shù)量更新為 200。

我們可以編寫一個(gè)函數(shù)來處理更新邏輯:

def update_data(new_quantity, name):
  db = sqlite3.connect('database.db')
  cursor = db.cursor()
  cursor.execute("UPDATE inventory SET quantity =? WHERE name=?",
                 (new_quantity, name))
  db.commit()
  db.close()
# Usage:  
update_data(350, 'Bananas')

與插入類似,這使用查詢參數(shù)安全地傳入值。

刪除數(shù)據(jù)

可以使用 DELETE 語句刪除行:

DELETE FROM inventory WHERE name = 'Oranges'

這將刪除橙色行。

下面是我們?nèi)绾螌?shí)現(xiàn)刪除功能:

def delete_data(name):
  db = sqlite3.connect('database.db')
  cursor = db.cursor()
  cursor.execute("DELETE FROM inventory WHERE name=?", (name,))
  db.commit()
  db.close()
# Usage:
delete_data('Oranges')

同樣,使用查詢參數(shù)可以避免漏洞并使代碼更易于維護(hù)。

使用Sqlite3構(gòu)建

首先,請(qǐng)?jiān)诖颂幙寺〈鎯?chǔ)庫并按照教程進(jìn)行操作。盡管這是初學(xué)者課程,但您必須對(duì) SQL 有一點(diǎn)了解才能完成。

第一步是導(dǎo)入 sqlite3 模塊:

import sqlite3

這使我們能夠訪問 Python 中的所有 SQLite 數(shù)據(jù)庫功能。

創(chuàng)建表

接下來,定義 create_table() 函數(shù)來創(chuàng)建一個(gè)名為 store 的表,其中包含項(xiàng)目、數(shù)量和價(jià)格列:

def create_table():
  new_data = sqlite3.connect('data_base1')
  change = new_data.cursor()
  change.execute("CREATE TABLE IF NOT EXISTS store (item TEXT, quantity INTEGER, price REAL)")
  new_data.commit()
  new_data.close()

分解一下:

  • sqlite3.connect() 打開到數(shù)據(jù)庫文件的連接。

  • new_data.cursor() 獲取一個(gè)游標(biāo)對(duì)象來執(zhí)行SQL。

  • execute() 運(yùn)行 CREATE TABLE 查詢。

  • commit() 保存更改。

  • close() 關(guān)閉連接。

插入數(shù)據(jù)

item() 函數(shù)處理將數(shù)據(jù)插入表中:

def item(item, quantity, price):
  new_data = sqlite3.connect('data_base1')
  change = new_data.cursor()
  change.execute("INSERT INTO store VALUES(?,?,?)", (item, quantity, price))
  new_data.commit()
  new_data.close()

它以項(xiàng)目、數(shù)量和價(jià)格作為參數(shù)。INSERT 查詢使用占位符 ? 將這些值安全地插入到新行中。

查看數(shù)據(jù)

為了查詢數(shù)據(jù),定義了view()函數(shù):

def view():
  new_data = sqlite3.connect('data_base1')
  change = new_data.cursor()
  change.execute("SELECT * FROM store")
  rows = change.fetchall()
  change.close()
  return rows

它使用 SELECT * 選擇所有行,使用 fetchall() 獲取結(jié)果,然后返回它們。

刪除數(shù)據(jù)

要按項(xiàng)目名稱刪除行,請(qǐng)使用delete()函數(shù):

def delete(item):
  new_data = sqlite3.connect('data_base1')
  change = new_data.cursor()
  change.execute("DELETE FROM store WHERE item =?", (item,))  
  new_data.commit()
  new_data.close()

WHERE 子句通過項(xiàng)目名稱標(biāo)識(shí)要?jiǎng)h除的行。

更新數(shù)據(jù)

最后,update() 可以修改給定商品的數(shù)量和價(jià)格:

def update(quantity, price, item):
  new_data = sqlite3.connect('data_base1')
  change = new_data.cursor()
  change.execute("UPDATE store SET quantity =?, price =? WHERE item=?",
                (quantity, price, item))
  new_data.commit()
  new_data.close()

SET 子句指定要更新的列,WHERE 標(biāo)識(shí)行。

包起來

總之,在 Python 中使用 SQLite 數(shù)據(jù)庫的關(guān)鍵步驟是:

  1. 將 sqlite3 模塊導(dǎo)入到您的項(xiàng)目中。

  2. 使用 sqlite3.connect() 創(chuàng)建數(shù)據(jù)庫連接。

  3. 從連接中獲取游標(biāo)來執(zhí)行SQL語句。

  4. 構(gòu)造 SQL 查詢并使用游標(biāo)來執(zhí)行它們。

  5. 對(duì)于插入、更新和刪除 - 提交更改以保留它們。

  6. 對(duì)于查詢,使用cursor.fetchone() 或cursor.fetchall() 來檢索結(jié)果。

  7. 完成后關(guān)閉數(shù)據(jù)庫連接。

  8. 使用查詢參數(shù)而不是連接值來避免 SQL 注入。

  9. 將數(shù)據(jù)庫邏輯和查詢封裝在函數(shù)中以實(shí)現(xiàn)可重用。

有了這些概念,您就可以利用 SQLite 和 Python 的強(qiáng)大功能構(gòu)建強(qiáng)大的應(yīng)用程序。SQLite3 模塊和 SQL 使您可以完全控制創(chuàng)建、修改和查詢數(shù)據(jù)庫信息。

SQLite 支持更高級(jí)的功能,如事務(wù)、隔離級(jí)別、備份和加密。請(qǐng)務(wù)必參閱官方 SQLite 文檔以利用完整功能。

我希望這份綜合指南能讓您全面了解如何將 SQLite 集成到您的 Python 項(xiàng)目中!如果您還有其他問題,請(qǐng)告訴我。

我希望您喜歡閱讀本指南,并有動(dòng)力開始您的 Python 編程之旅。

如果你喜歡我的工作并且想幫助我繼續(xù)刪除這樣的內(nèi)容,請(qǐng)給我買杯 咖啡。


文章來源地址http://www.zghlxwxcb.cn/article/396.html

到此這篇關(guān)于SQLite 與 Python,Python項(xiàng)目中充分利用SQLite的綜合指南的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

原文地址:http://www.zghlxwxcb.cn/article/396.html

如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)聯(lián)系站長進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 在Python中利用內(nèi)置SQLite3模塊進(jìn)行數(shù)據(jù)庫操作的完整指南

    在Python中利用內(nèi)置SQLite3模塊進(jìn)行數(shù)據(jù)庫操作的完整指南

    ? 在Python中,使用SQLite非常方便,Python內(nèi)置了 SQLite3 模塊,無需額外安裝。SQLite 是一個(gè)輕量級(jí)的嵌入式數(shù)據(jù)庫,適用于小型項(xiàng)目和單用戶應(yīng)用。以下是一個(gè)簡單的示例,演示如何在 Python 中使用 SQLite,并提供了常見的查詢、增加、修改和刪除功能。 首先,確保你的 Python 安裝

    2024年02月03日
    瀏覽(93)
  • 微調(diào) LLaMA 2 模型:通過 QLoRA 充分利用單 GPU 效率 Meta LLaMA 2 微調(diào)過程綜合指南

    科技巨頭 Meta 于 2023 年 7 月 18 日發(fā)布了 LLaMA 2,這是他們最新版本的大型語言模型 (LLM),成為頭條新聞。我相信 Llama2 在進(jìn)一步推動(dòng)人工智能技術(shù)方面取得了巨大飛躍,人們將關(guān)注私人領(lǐng)域未來對(duì)聊天機(jī)器人的微調(diào)將超過一般聊天機(jī)器人。1 這些尖端模型從 2023 年 1 月到 2023

    2024年02月10日
    瀏覽(23)
  • Python數(shù)據(jù)庫編程全指南SQLite和MySQL實(shí)踐

    本文分享自華為云社區(qū)《Python數(shù)據(jù)庫編程全指南SQLite和MySQL實(shí)踐》,作者: 檸檬味擁抱。 首先,我們需要安裝Python的數(shù)據(jù)庫驅(qū)動(dòng)程序,以便與SQLite和MySQL進(jìn)行交互。對(duì)于SQLite,Python自帶了支持;而對(duì)于MySQL,我們需要安裝額外的庫,如 mysql-connector-python 。 SQLite是一種輕量級(jí)的

    2024年03月28日
    瀏覽(37)
  • SQLite數(shù)據(jù)庫使用指南以及相關(guān)API編程

    SQLite數(shù)據(jù)庫使用指南以及相關(guān)API編程

    SQLite是一種基于C語言開發(fā)的輕量級(jí)、快速、自包含、高可靠性和全功能的SQL數(shù)據(jù)庫引擎。它是全球范圍內(nèi)使用最為廣泛的數(shù)據(jù)庫引擎,被嵌入到所有移動(dòng)設(shè)備和大部分計(jì)算機(jī)中,并且伴隨著無數(shù)日常使用的應(yīng)用程序一起提供。 SQLite的文件格式具有穩(wěn)定性、跨平臺(tái)性以及向后

    2024年03月20日
    瀏覽(23)
  • .NET中輕松應(yīng)用SQLite:零配置數(shù)據(jù)庫引擎的完美指南

    .NET中輕松應(yīng)用SQLite:零配置數(shù)據(jù)庫引擎的完美指南

    ? SQLite 是一種輕量級(jí)的嵌入式數(shù)據(jù)庫引擎,它在 .NET 中被廣泛使用。SQLite 是一個(gè)零配置的數(shù)據(jù)庫引擎,不需要服務(wù)器,可以直接在應(yīng)用程序中使用。下面是一個(gè)簡單的示例,演示如何在 .NET 中使用 SQLite,并提供了常見的查詢、增加、修改和刪除功能。 首先,你需要在項(xiàng)目中

    2024年02月02日
    瀏覽(19)
  • SQLite學(xué)習(xí)(十二)SQLite《社區(qū)流動(dòng)人員系統(tǒng)》項(xiàng)目實(shí)戰(zhàn),數(shù)據(jù)庫創(chuàng)建

    在前面的博客中,我們學(xué)習(xí)了 SQLite 的理論知識(shí),從本篇博客開始,同學(xué)們將通過一個(gè)實(shí)戰(zhàn)項(xiàng)目**《社區(qū)流動(dòng)人員系統(tǒng)》**,對(duì)之前所學(xué)的知識(shí)做一次實(shí)戰(zhàn)應(yīng)用。 隨著社會(huì)經(jīng)濟(jì)的迅速崛起,城市一體化的步伐加快,大量農(nóng)民選擇轉(zhuǎn)移到城市中就業(yè)。形成了一股數(shù)量巨大的流動(dòng)性

    2024年02月08日
    瀏覽(23)
  • SpringBoot項(xiàng)目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫

    SpringBoot項(xiàng)目整合MybatisPlus并使用SQLite作為數(shù)據(jù)庫

    SQLite 是一個(gè)進(jìn)程內(nèi)庫,它實(shí)現(xiàn)了 獨(dú)立的、無服務(wù)器的、零配置 的事務(wù)性 SQL 數(shù)據(jù)庫引擎。SQLite 沒有單獨(dú)的服務(wù)器進(jìn)程。 SQLite直接讀取和寫入普通磁盤文件,就是一個(gè)完整的 SQL 數(shù)據(jù)庫 , 包含多個(gè)表、索引、 觸發(fā)器和視圖包含在單個(gè)磁盤文件中 。 數(shù)據(jù)庫文件格式是跨平臺(tái)

    2024年01月21日
    瀏覽(56)
  • Python數(shù)據(jù)庫模塊(sqlite3,SQLite3)

    創(chuàng)建數(shù)據(jù)庫:在控制臺(tái)sqlite3 name sqlite3.connect(database [,timeout ,other optional arguments]) 打開數(shù)據(jù)庫;如果指數(shù)據(jù)庫存在則返回一個(gè)連接對(duì)象,如果不存在則會(huì)創(chuàng)建一個(gè)數(shù)據(jù)庫; connection.cursor() 創(chuàng)建一個(gè)cursor; cursor.execute(sql) 執(zhí)行一個(gè)sql語句,該語句可以被參數(shù)化; connection.execut

    2024年03月19日
    瀏覽(27)
  • Electron+vue3項(xiàng)目使用SQLite3數(shù)據(jù)庫

    Electron+vue3項(xiàng)目使用SQLite3數(shù)據(jù)庫

    SQLite ?是一個(gè)進(jìn)程內(nèi)的庫,實(shí)現(xiàn)了自給自足的、無服務(wù)器的、零配置的、事務(wù)性的? SQL ?數(shù)據(jù)庫引擎。它是一個(gè)零配置的數(shù)據(jù)庫,這意味著與其他數(shù)據(jù)庫不一樣,我們不需要在系統(tǒng)中配置。 就像其他數(shù)據(jù)庫, SQLite ?引擎不是一個(gè)獨(dú)立的進(jìn)程,可以按應(yīng)用程序需求進(jìn)行靜態(tài)或

    2024年02月13日
    瀏覽(41)
  • 基于Qt數(shù)據(jù)庫項(xiàng)目實(shí)現(xiàn)(Sqlite3為例)|考查數(shù)據(jù)庫、表格(QTableView 顯示)(進(jìn)階)

    01?數(shù)據(jù)庫表格(QTableView 顯示) 本小節(jié)設(shè)計(jì)一個(gè)生活中的例子,使用數(shù)據(jù)庫修改/查詢員工的編號(hào)、姓名、年齡、性別與照片信息。 本例將數(shù)據(jù)庫的內(nèi)容顯示到?QTableView?上。如果只是簡單的顯示數(shù)據(jù)庫的內(nèi)容到QTableView?上,可以使用下面的方法,此方法?QTableView?上可以看到

    2024年02月20日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包