什么是从数据表中获取数据的Python函数命令

时间:2017-05-25 12:30:31

标签: python command

我是Python新手。我目前正在开发一个应用程序,它根据用户输入从Data表中获取数据。到目前为止,我似乎无法在任何地方找到正确的命令集。有人有任何提示吗?

在更多技术术语中,这个想法是这样的 - 用户输入数据,用户提交,查询,获取和检索,打印结果......任何想法?

2 个答案:

答案 0 :(得分:0)

如果您使用的是XLSX文件,则此处发布的答案(openpyxl find cell or row by value)可以根据单元格中的特定值查找行。

如果是CSV文件,如果有一列唯一键,您可能需要阅读它并创建一个字典,否则每次输入搜索词时都会遍历每一行。

答案 1 :(得分:0)

以下是一个可以给你一些想法的解决方案。 注意我仅使用StringIO作为示例,这样我就不必使用文件,因此该示例可以直接使用。您可以修改代码以从Excel文件,Pandas DataFrame,数据库或任何其他类型的存储中读取。那是你的选择。

import csv
import StringIO

data = """date,obs1,obs2
2017-01-01,23.2,30.2
2017-02-01,14.9,13.3
"""

buffer = StringIO.StringIO()
buffer.write(data)
buffer.seek(0)


def select_action():
    menu = """Would you like to: (select a number)
1) See all data?
2) See data for a specific date?
3) Exit
-->"""
    action = raw_input(menu)
    while action.strip() not in ['1', '2', '3']:
        print "ERROR: Invalid action"
        action = raw_input(menu)

def do_action(action):
    if action == '1':
        reader = csv.reader(buffer)
        for line in reader:
            print "\t".join(field for field in line)
    elif action == '2':
        reader = csv.DictReader(buffer)
        date = raw_input("Select date: ").strip()
        for line in reader:
            if date == line['date']:
                output = ''
                for k, v in line.items():
                    output += ("%s: %s " % (k, v))
                print output

    # You could write a case for action 3, but it isn't necessary
    # the way I've written the code.    
    print "Goodbye"

def run():
    action = select_action()
    do_action(action)