从数据库查询中读取并显示文本文件数据的Python代码
我刚开始学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查询和字典匹配起来呢?
谢谢。