【问题标题】:read and display data from text file from database query in Python从 Python 中的数据库查询中读取和显示文本文件中的数据
【发布时间】:2014-08-11 19:23:26
【问题描述】:

我是 python 的新手,我在 python 中遇到了一种数据库引擎问题

我有文本文件数据库表(person.text),在 python 中带有分隔符(|)。例如

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

现在我想要一个从用户那里获取查询并从这个文本文件中获取数据并显示的功能。查询可以是 select、update(带或不带 where 子句)。

例如,如果用户输入“从人员中选择姓名”,那么输出将是

sue
John
Mark

我很困惑我应该使用哪种数据结构??

【问题讨论】:

    标签: python mysql sql python-3.x pydev


    【解决方案1】:

    应该是 data = line.split("|") 而不是 data = f.split("|")。

    我需要在用户输入中编写查询,然后它必须由代码解释。如果我使用上述解决方案,那么如何将我的 SQL 查询与字典匹配?

    谢谢

    【讨论】:

    • 嘿,你应该使用评论部分。然后,您可以使用 for 循环搜索字典。编辑我下面的答案以包括现在
    【解决方案2】:

    如果您想维护当前基于文本的数据库,您可能需要手动解析它,然后将其存储为本地字典(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]])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多