一、SQLite3數據庫
SQLite3是一個嵌入式數據庫,它可以作為應用程序的一部分而無需單獨的服務器進程,以文件形式存儲,只需訪問這個文件即可操作數據,是一種非常輕便的數據庫。
SQLite3支持大部分SQL語法和操作,但是不支持存儲過程和觸發器,它具有高性能、佔用資源少、易於部署和使用等優點。
以下是一個簡單的SQLite3數據庫創建的例子:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 創建表
c.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)''')
# 插入數據
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
# 查詢數據
c.execute("SELECT * FROM stocks WHERE symbol='RHAT'")
print(c.fetchone())
conn.commit()
conn.close()
二、電腦怎麼修改SQLite3文件
SQLite3文件是以二進制格式存儲的,一般來說不建議直接修改,因為可能會破壞數據庫文件的完整性。如果要修改數據庫內容,應該使用SQL語句進行操作。
三、SQLite3注入
SQLite3同樣存在注入漏洞,攻擊者可以在輸入框中輸入SQL語句,可能會導致SQL注入漏洞。因此,在開發過程中應該注意輸入數據的過濾和轉義,避免不必要的風險。
以下是一個簡單的SQL注入漏洞的例子:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
symbol = input("請輸入股票代碼:")
sql = "SELECT * FROM stocks WHERE symbol='%s'" % symbol
c.execute(sql)
print(c.fetchall())
conn.close()
如果輸入的數據為`RHAT’;DROP TABLE stocks;–`,則會導致stocks表被刪除。
四、嵌入式SQLite3數據庫鎖表
SQLite3同樣支持多線程操作,但是對同一個數據表進行操作時需要小心,可能會出現鎖表情況。
以下是一個簡單的鎖表的例子:
import sqlite3
import threading
def update_stock(name, qty):
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("UPDATE stocks SET qty=qty+? WHERE symbol=?", (qty, name))
conn.commit()
conn.close()
t1 = threading.Thread(target=update_stock, args=('RHAT', 100,))
t2 = threading.Thread(target=update_stock, args=('GOOG', 200,))
t1.start()
t2.start()
t1.join()
t2.join()
如果t1和t2線程同時對同一個數據表進行操作,則可能會出現鎖表情況。
五、SQLite3命令行
SQLite3提供了命令行工具,可以用於在終端中直接操作數據庫,非常方便。
以下是一些常用的命令:
.open FILENAME打開一個數據庫文件.tables顯示數據庫中的所有表.schema TABLENAME顯示指定表的創建語句.dump以SQL語句的形式顯示整個數據庫的內容
六、SQLite3關聯鍵
SQLite3同樣支持關聯鍵,可以用於多表查詢和數據的連結。以下是一個簡單的關聯鍵的例子:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
# 創建表
c.execute('''CREATE TABLE stocks
(date text, trans text, symbol text, qty real, price real)''')
c.execute('''CREATE TABLE company
(name text, symbol text)''')
# 插入數據
c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
c.execute("INSERT INTO company VALUES ('Red Hat Inc.', 'RHAT')")
# 關聯查詢
c.execute('''SELECT stocks.*, company.name FROM stocks, company
WHERE stocks.symbol=company.symbol''')
print(c.fetchone())
conn.commit()
conn.close()
七、SQLite3命令
SQLite3支持大部分標準SQL的命令,以下是一些常用的命令:
SELECT查詢語句INSERT插入語句UPDATE更新語句DELETE刪除語句CREATE TABLE創建表ALTER TABLE修改表結構DROP TABLE刪除表
八、SQLite3關係
SQLite3支持多種數據類型,以下是常用的數據類型:
NULL空值INTEGER整型REAL浮點型TEXT字符串類型BLOB二進制類型
九、SQLite3刪除語句
SQLite3支持使用DELETE語句刪除數據,以下是一個刪除語句的例子:
import sqlite3
conn = sqlite3.connect('example.db')
c = conn.cursor()
c.execute("DELETE FROM stocks WHERE symbol='RHAT'")
conn.commit()
conn.close()
以上是SQLite3的基本操作,對於想要深入學習SQLite3的工程師,可以參考官方文檔或其他相關書籍。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/280592.html
微信掃一掃
支付寶掃一掃