首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python sqlite3 -按星期几对表进行排序

Python sqlite3 -按星期几对表进行排序
EN

Stack Overflow用户
提问于 2018-07-14 01:30:27
回答 2查看 268关注 0票数 2

我有一个表,其中一列的条目具有不同的日期(星期一、星期二、星期三等),我希望按天来组织我的表,以便该列中包含星期一的行首先排在其余日期之后。

到目前为止,我拥有的函数是:

import sqlite3
from tabulate import tabulate
conn = sqlite3.connect("Table.db")
c = conn.cursor()

def order_by_day():
    days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
    with conn:
        for i in days:
            data = c.execute("SELECT * FROM Table_name WHERE Day_column=?", (i,))
            print(tabulate(data, headers="keys", tablefmt="grid", stralign='center', numalign='center'))

这个函数可以工作,但它为一周中的每一天创建了7个单独的表,而不是一个表(print( tables ())函数使表整洁有序,而不是我使用fetchall(),所以我的表如下所示)。

+--------+---------------+-------------+
|  Col1  |      Col2     | Day_column  |
+========+===============+=============+

有没有办法修改我的函数,让它创建一个包含我所有按天组织的数据的表,而不是每天7个单独的表?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-14 01:49:51

要在一个输出中打印所有内容,您可以尝试

import sqlite3
from tabulate import tabulate
conn = sqlite3.connect("Table.db")
c = conn.cursor()

def order_by_day():
    with conn:
        data = c.execute("SELECT * FROM Table_name ORDER BY Day_column")
        print(tabulate(data, headers="keys", tablefmt="grid", stralign='center', numalign='center'))

我发现了一个额外的语法from this question

import sqlite3
from tabulate import tabulate
conn = sqlite3.connect("Table.db")
c = conn.cursor()

def order_by_day():
    with conn:
        data = c.execute("""SELECT * FROM Table_name ORDER BY Day_column CASE 
                                                                         WHEN Day_column='Monday' THEN 1
                                                                         WHEN Day_column='Tuesday' THEN 2                                                                             
                                                                         WHEN Day_column='Wednesday' THEN 3
                                                                         WHEN Day_column='Thursday' THEN 4
                                                                         WHEN Day_column='Friday' THEN 5
                                                                         WHEN Day_column='Saturday' THEN 6
                                                                         WHEN Day_column='Sunday' THEN 7
                                                                         END""")
        print(tabulate(data.fetchall(), headers="keys", tablefmt="grid", stralign='center', numalign='center'))
票数 1
EN

Stack Overflow用户

发布于 2018-07-14 03:41:30

我想出了如何正确地对其进行排序并将其显示为一个表。我按一周中的几天手动订购,如下所示。

import sqlite3
from tabulate import tabulate
conn = sqlite3.connect("Table.db")
c = conn.cursor()

def order_by_day():
    with conn:
        data = c.execute("""SELECT * FROM Table_name ORDER BY Day_column='Monday'    DESC,
                                                              Day_column='Tuesday'   DESC,
                                                              Day_column='Wednesday' DESC,
                                                              Day_column='Thursday'  DESC,
                                                              Day_column='Friday'    DESC,
                                                              Day_column='Saturday'  DESC,
                                                              Day_column='Sunday'    DESC""")
        print(tabulate(data, headers="keys", tablefmt="grid", stralign='center', numalign='center'))

我相信有更好的方法来订购它,但我认为这样对我来说是很好的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51330180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档