数据库的要求

本来我是不准备写数据库的。而且是准备从零开始,学习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.mzph.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)用户密码管理…