數據庫的要求

本來我是不準備寫數據庫的。而且是準備從零開始,學習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。然后,在命令行中運行該文件,按照提示操作即可。

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

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

相關文章

【53】Camunda8-Zeebe核心引擎-Partitions分區與Internal processing內部處理

Partitions分區 在Zeebe中,所有數據都是基于分區的。(一個)分區本質上是一個關于流程事件的持久化流。在broker集群中,分區分布在節點之間,因此可以將其視為分片。啟動/初始化Zeebe 集群時,用戶可以配置所需的分區數。如果使用過Kafka,這部分內容是比較相似的。 每當部…

SpringBoot集成jxls2實現復雜(多表格)excel導出

核心依賴 需求 導出多個表格,包含圖片,類似商品標簽 1.配置模板 創建一個xlsx的模板文件,配置如下 該模板進行遍歷了兩次,因為我想要導出的數據分為兩列展示,左右布局,一個循環實現不了,所以采…

【ARM64 常見匯編指令學習 20.1 -- ARM 偽指令 .include】

請閱讀【嵌入式開發學習必備專欄】 文章目錄 ARM 編譯指令 .include 使用介紹a.s 文件b.s 文件小結 ARM 編譯指令 .include 使用介紹 在UEFI(統一可擴展固件接口)開發中,通常會用到匯編語言文件(.s 或 .S 文件)。如果…

百面算法工程師 | 正則優化函數——BN、LN、Dropout

本文給大家帶來的百面算法工程師是正則優化函數,文章內總結了常見的提問問題,旨在為廣大學子模擬出更貼合實際的面試問答場景。在這篇文章中,我們將總結一些BN、LN、Dropout的相關知識,并提供參考的回答及其理論基礎,以…

Linux kbdconfig命令教程:鍵盤設置與配置(附案例詳解和注意事項)

Linux kbdconfig命令介紹 kbdconfig(鍵盤配置)是一個用于設置鍵盤類型的程序,提供圖形化的操作界面。kbdconfig實際上是修改/etc/sysconfig/keyboard的鍵盤配置文件。 Linux kbdconfig命令適用的Linux版本 kbdconfig命令主要在Red Hat Lin…

電商秒殺系統-案例04-redis下的session控制

前言: 在現代的Web應用中,安全和高效的用戶身份驗證機制是至關重要的。本文將深入探討基于令牌的用戶登錄會話機制,特別是在使用Redis進行會話管理的情景。通過這一案例實戰,我們將了解令牌如何在用戶身份驗證過程中發揮核心作用&…

Linux dircolors命令教程:如何設置ls命令的顏色方案(附案例詳解和注意事項)

Linux dircolors命令介紹 dircolors命令在Linux中用于設置ls命令顯示文件和目錄的顏色方案。它可以輸出設置LS_COLORS環境變量的命令。 Linux dircolors命令適用的Linux版本 dircolors命令在大多數Linux發行版中都可用,包括Debian、Ubuntu、Alpine、Arch Linux、…

C++ | Leetcode C++題解之第85題最大矩形

題目&#xff1a; 題解&#xff1a; class Solution { public:int maximalRectangle(vector<vector<char>>& matrix) {int m matrix.size();if (m 0) {return 0;}int n matrix[0].size();vector<vector<int>> left(m, vector<int>(n, 0)…

【HCIP學習】BGP對等體組、聚合、路由反射器、聯盟、團體屬性

一、大規模BGP網絡所遇到的問題 BGP對等體眾多&#xff0c;配置繁瑣&#xff0c;維護管理難度大 BGP路由表龐大&#xff0c;對設備性能提出挑戰 IBGP全連接&#xff0c;應用和管理BGP難度增加&#xff0c;鄰居數量過多 路由變化頻繁&#xff0c;導致路由更新頻繁 二、解決大…

使用QT-QSqlQuery::value()遇到的問題

在實現客戶端間好友添加功能時&#xff0c;我通過以下函數想實現數據庫對好友信息的保存 bool OpeDB::handleAddFriend_repound(const char *pername, const char *name) { // pername 被添加方 name 申請添加方 qDebug() << pername << " " &l…

Nginx(簡潔版)

基本配置 worker_processes 1; //默認為1&#xff0c;表示開啟一個業務進程 events //事件驅動模塊&#xff08;&#xff09;{worker_connections 1024; //單個業務進程可接受連接數 } http{include mime.types; // 引入http mime類型&#xff08;在外部已經定義好&#xff0c…

Java數組——冒泡排序

冒泡排序是最出名的排序算法之一&#xff0c;總共有八大排序。 冒泡排序代碼并不復雜&#xff0c;共兩層循環&#xff0c;外層冒泡輪數&#xff0c;里層依次比較。 算法步驟&#xff1a; 1. 比較數組中兩個相鄰元素&#xff0c;如果第一個元素比第二個元素大&#xff0c;交換…

如何在huggingface上申請下載使用llama2/3模型

1. 在對應模型的huggingface頁面上提交申請 搜索對應的模型型號 登錄huggingface&#xff0c;在模型詳情頁面上&#xff0c;找到這個表單&#xff0c;填寫內容&#xff0c;提交申請。需要使用梯子&#xff0c;country填寫梯子的位置吧(比如美國&#xff09; 等待一小時左右…

SEMI啟動SiC專有技術項目

公司鄭重聲明&#xff0c;其正致力于篩選那些能夠穩定輸出、且可重復使用的關鍵參數性能。SEMI&#xff0c;這家SiC領域的佼佼者&#xff0c;已經啟動了一項獨具匠心的專有技術&#xff08;KGD&#xff09;篩選程序。該程序旨在為客戶提供高品質的、經過嚴格電氣分類與光學檢驗…

基于python的旅游爬蟲可視化與實現

摘要 本項目為基于python的旅游爬蟲可視化的設計與實現&#xff0c;項目以Web系統形式展示&#xff0c;利用Xpath爬蟲爬取去哪兒網針對旅游業的需求&#xff0c;對國內熱門旅游景點數據可視化系統&#xff0c;將爬取好的數據保存為CSV文件&#xff0c;再通過ORM框架導入MySQL數…

Python圖形界面(GUI)Tkinter筆記(五):控件的定位(3)

Tkinter(GUI)設計圖形界面時有三種控件的包裝方法去定位各控件在窗口(父容器、根窗口)上的位置。 【1】pack()方法:用方位來定位位置,類似于Word文檔中的文字對齊方式。 【2】grid()方法:用二維表格式的坐標值定位,類似于EXCEL單元格坐標。 【3】place()方法:用窗口…

VUE基礎之,ref屬性,props配置項,mixin(混入)

ref屬性 被用來給元素或子組件注冊引用信息&#xff08;id的替代者&#xff09; 應用在html標簽上獲取的是真實DOM元素&#xff0c;應用在組件標簽上是組件實例對象&#xff08;vc&#xff09; 使用方式&#xff1a; 打標識&#xff1a;<h1 ref"xxx">.....&l…

【python量化交易】qteasy使用教程07——創建更加復雜的自定義交易策略

創建更加復雜的自定義交易策略 使用交易策略類&#xff0c;創建更復雜的自定義策略開始前的準備工作本節的目標繼承Strategy類&#xff0c;創建一個復雜的多因子選股策略策略和回測參數配置&#xff0c;并開始回測 本節回顧 使用交易策略類&#xff0c;創建更復雜的自定義策略 …

Mysql 多表查詢,內外連接

內連接&#xff1a; 隱式內連接 使用sql語句直接進行多表查詢 select 字段列表 from 表1 , 表2 where 條件 … ; 顯式內連接 將‘&#xff0c;’改為 inner join 連接兩個表的 on select 字段列表 from 表1 [ inner ] join 表2 on 連接條件 … ; select emp.id, emp.name, …

應急響應篇——加固

Linux 安全配置 1.下載安裝安全軟件 2.取消Telnet登錄采用SSH方式并更改ssh服務端遠程登錄的配置 1)Telnet登錄協議是明文不加密不安全,所以采用更安全的SSH協議。 2)更改ssh服務端遠程登錄相關配置。 3.用戶管理相關 1)刪除不必要的用戶和用戶組。 2)用戶密碼管理…