嗨,大家好,我是蘭若姐姐。今天給大家說下如何創建SQLite 數據庫連接,并將數據庫存儲在內存中,這是一種臨時的、私有的數據存儲空間,一般用于以下情形:
什么都不說,先上代碼:
import sqlite3
創建數據庫連接
conn = sqlite3.connect(':memory:')cursor = conn.cursor()
描述數據庫表結構
database_schema_string = """CREATE TABLE orders (id INT PRIMARY KEY NOT NULL, -- 主鍵,不允許為空customer_id INT NOT NULL, -- 客戶ID,不允許為空product_id STR NOT NULL, -- 產品ID,不允許為空price DECIMAL(10,2) NOT NULL, -- 價格,不允許為空status INT NOT NULL, -- 訂單狀態,整數類型,不允許為空。0代表待支付,1代表已支付,2代表已退款create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- 創建時間,默認為當前時間pay_time TIMESTAMP -- 支付時間,可以為空);
創建orders表
cursor.execute(database_schema_string)
插入5條明確的模擬記錄
mock_data = [(1, 1001, 'TSHIRT_1', 50.00, 0, '2023-09-12 10:00:00', None),(2, 1001, 'TSHIRT_2', 75.50, 1, '2023-09-16 11:00:00', '2023-08-16 12:00:00'),(3, 1002, 'SHOES_X2', 25.25, 2, '2023-10-17 12:30:00', '2023-08-17 13:00:00'),(4, 1003, 'SHOES_X2', 25.25, 1, '2023-10-17 12:30:00', '2023-08-17 13:00:00'),(5, 1003, 'HAT_Z112', 60.75, 1, '2023-10-20 14:00:00', '2023-08-20 15:00:00'),(6, 1002, 'WATCH_X001', 90.00, 0, '2023-10-28 16:00:00', None)]for record in mock_data:cursor.execute('''INSERT INTO orders (id, customer_id, product_id, price, status, create_time, pay_time)VALUES (?, ?, ?, ?, ?, ?, ?)''', record)
提交事務
conn.commit()
這樣就在內存中的 SQLite 數據庫,定義了一個名為 orders 的表,并插入了一些模擬的訂單數據。這種方式通常用于測試或開發環境,因為內存數據庫速度快且不需要管理磁盤文件
- 訪問內存中的數據庫:
-
由于數據庫存儲在內存中,因此可以直接使用
sqlite3
模塊提供的接口來訪問和操作數據。 -
我們創建了一個數據庫連接
conn = sqlite3.connect(':memory:')
,并獲取了一個游標對象cursor = conn.cursor()
。 -
使用這個游標對象,我們就可以執行各種 SQL 查詢和操作,例如
cursor.execute("SELECT * FROM orders")
來查詢orders
表中的所有數據。 -
最后,記得在操作完成后調用
conn.commit()
提交更改,或conn.rollback()
回滾更改。
- 無需賬號密碼:
-
在使用
sqlite3.connect(':memory:')
創建內存數據庫連接時,不需要指定任何賬號和密碼。 -
SQLite 是一種嵌入式數據庫,它不需要獨立的數據庫服務器,也不需要用戶認證。
-
內存中的 SQLite 數據庫是完全私有的,只能被當前運行的 Python 程序訪問。沒有其他用戶或進程能訪問這個數據庫。
因此,在使用內存中的 SQLite 數據庫時,你不需要擔心賬號和密碼的問題。這種方式適合于開發和測試環境,是一個臨時的、私有的數據存儲空間。