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

标签 python python-3.x sqlite

我有一个表,其中一列的条目有不同的日期(星期一、星期二、星期三等),并且我想按天组织我的表,以便该列的星期一行首先出现在剩下的日子。

到目前为止我拥有的功能是:

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(tabulate()) 函数使表整洁有序,而不是我使用 fetchall() ,所以我的表看起来像以下)。

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

有什么方法可以修改我的函数,以便它创建一个包含按天组织的所有数据的单个表,而不是每天 7 个单独的表?

最佳答案

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

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'))

关于Python sqlite3 - 按星期几列对表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51330180/

相关文章:

python - 如何从不同模型获取查询集的 json 响应列表?

android - SQLITE Android 删除查询已执行但未删除该值。它在APP启动时再次显示

php - 将 SQLite 文件发送到服务器 iOS

SQL/SQL-LITE - 过滤后统计记录

DLL 中的 Python (c++) Visual Studio

python - Opencv 将 numpy.zeros 绘制为灰度图像

python - 在 qtablewidget 中寻找信号

python - pandas 使用 groupby 变换创建 bool 列

python - 后缀树在python中的实现

python - 如何读取文本文件并转换为字典?