本來我是不準備寫數據庫的。而且是準備從零開始,學習python,學完語言學,會c和寫作技法,再來學習數據庫
那樣做的復雜度是天量的,按部就班什么的具備,因為你完全不清楚什么時候就有這個基礎和條件,寫這個數據庫
寫一個數據庫
編號 文本 時間
1 第一個文本 我有1000000萬數據id INTEGER PRIMARY KEY, text TEXT, time TIMESTAMP DEFAULT CURRENT_TIMESTAMP );用中文給數據庫文本貼標簽數據庫是
input輸入多行文本,允許特殊字符串
按“# ? ?”結束一個文本輸入
無限循環有查詢和統計行每次搜索存儲數據庫中 作為標簽存儲添加
我們來設計一下這個數據庫,以及相應的添加標簽和搜索功能#
首先,我們需要一個表格來存儲文本數據,包括編號、文本內容和時間戳。然后,我們需要一個表格來存儲標簽,每個標簽與一個或多個文本相關聯。
這里是一個簡單的數據庫設計:
文本表 (Texts):
- 編號 (ID): 整數類型,主鍵,自增長
- 文本 (Text): 文本類型,存儲輸入的文本內容
- 時間 (Time): 時間戳類型,默認為當前時間
標簽表 (Tags):
- 編號 (ID): 整數類型,主鍵,自增長
- 標簽 (Tag): 文本類型,存儲標簽內容
- 文本編號 (Text ID): 整數類型,外鍵,與文本表中的編號關聯
下面是一些示例 SQL 命令,用于創建這些表格:
CREATE TABLE Texts (ID INTEGER PRIMARY KEY AUTOINCREMENT,Text TEXT,Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);CREATE TABLE Tags (ID INTEGER PRIMARY KEY AUTOINCREMENT,Tag TEXT,TextID INTEGER,FOREIGN KEY (TextID) REFERENCES Texts(ID)
);
接下來,我們需要實現添加標簽和搜索功能。這些功能可以通過編寫相應的 SQL 查詢語句和應用程序代碼來完成。具體實現取決于你使用的編程語言和數據庫管理系統。
例如,添加標簽的功能可以通過向 Tags 表中插入新記錄來實現。搜索功能可以通過查詢 Tags 表并聯合查詢 Texts 表來實現。
你可以使用類似以下的 SQL 語句來添加標簽和搜索標簽:
-- 添加標簽
INSERT INTO Tags (Tag, TextID) VALUES ('標簽內容', 文本編號);-- 搜索標簽
SELECT Texts.Text
FROM Texts
INNER JOIN Tags ON Texts.ID = Tags.TextID
WHERE Tags.Tag = '標簽內容';
通過這種設計和實現,你就可以向數據庫中的文本添加標簽,并可以根據標簽搜索文本。
#完整代碼#
以下是一個使用 Python 和 SQLite3 的完整示例代碼,包括添加標簽和搜索標簽的功能:
import sqlite3# 連接到 SQLite 數據庫
conn = sqlite3.connect('text_database.db')
cursor = conn.cursor()# 創建文本表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Texts (ID INTEGER PRIMARY KEY AUTOINCREMENT,Text TEXT,Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
''')# 創建標簽表
cursor.execute('''
CREATE TABLE IF NOT EXISTS Tags (ID INTEGER PRIMARY KEY AUTOINCREMENT,Tag TEXT,TextID INTEGER,FOREIGN KEY (TextID) REFERENCES Texts(ID)
);
''')# 添加標簽函數
def add_tag(text_id, tag):cursor.execute("INSERT INTO Tags (Tag, TextID) VALUES (?, ?)", (tag, text_id))conn.commit()# 搜索標簽函數
def search_by_tag(tag):cursor.execute('''SELECT Texts.TextFROM TextsINNER JOIN Tags ON Texts.ID = Tags.TextIDWHERE Tags.Tag = ?''', (tag,))results = cursor.fetchall()if results:print("搜索結果:")for result in results:print(result[0])else:print("未找到匹配的文本。")# 添加文本函數
def add_text(text):cursor.execute("INSERT INTO Texts (Text) VALUES (?)", (text,))text_id = cursor.lastrowidconn.commit()return text_id# 主程序
while True:print("\n請輸入文本(以#結束):")text_lines = []while True:line = input().strip()if line == "#":breaktext_lines.append(line)text = '\n'.join(text_lines)text_id = add_text(text)print("請輸入標簽:")tag = input().strip()add_tag(text_id, tag)print("文本已添加,并貼上了標簽。")print("\n是否繼續添加文本?(yes/no)")choice = input().strip().lower()if choice != 'yes':break# 搜索標簽
print("\n請輸入要搜索的標簽:")
search_tag = input().strip()
search_by_tag(search_tag)# 關閉數據庫連接
conn.close()
請確保你已經安裝了 Python 和 SQLite3 模塊,并將此代碼保存在一個文件中,例如 text_database.py
。然后,在命令行中運行該文件,按照提示操作即可。