从数据库查询中读取并显示文本文件数据的Python代码

0 投票
2 回答
2764 浏览
提问于 2025-04-18 16:53

我刚开始学Python,现在遇到一个关于数据库引擎的问题,搞不清楚怎么解决。

我有一个文本文件数据库表(person.text),里面的数据是用竖线(|)分隔的。例如:

sue|45|Happy Lane|456-3245
John|43|67 Drury Lane|897-3456
Mark|21|Stuffy Street|345-7896

现在我想要一个功能,可以让用户输入查询,然后从这个文本文件中提取数据并显示出来。查询可以是选择(select)、更新(update),可以带条件也可以不带条件。

比如,如果用户输入“select name from person”,那么输出应该是:

sue
John
Mark

我有点困惑,不知道该用什么数据结构比较好?

2 个回答

0

如果你想保持现在的基于文本的数据库,你可能需要手动解析这些数据,然后把它们存储到一个本地字典里(使用defaultdict会让这件事变得简单),这样就可以通过关键词来搜索了。我还添加了一个数字主键,帮助把数据存储成可以通过关键词搜索的形式。

from collections import defaultdict

person = defaultdict(lambda: dict())

with open("path/to/person.txt", "r") as f:
    primary_key = 0
    for line in f:
        data = line.split("|")
        person[primary_key]["name"] = data[0]
        person[primary_key]["age"] = data[1]
        person[primary_key]["address"] = data[2]
        person[primary_key]["pnum"] = data[3]
        primary_key += 1

这样你就会有一个名为 person 的本地字典,用户可以通过输入关键词来进行搜索。

搜索:

query = "select name from person"

query_items = query.split(" ")

if query_items[0] == "select":
    table = eval(query_items[3])
    for value in table.values():
        print(value[query_items[1]])
0

这里说的是,不应该用 data = f.split("|"),而应该用 data = line.split("|")。

我需要让用户输入查询,然后代码要能理解这个查询。如果我用上面的解决方案,那我怎么能把我的SQL查询和字典匹配起来呢?

谢谢。

撰写回答