我有一个表,其中的一列中有不同的日期(星期一,星期二,星期三等),并且我想按天组织我的表,以便该列的星期一所在的行首先是其余的天。
到目前为止,我拥有的功能是:
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'))
我从这个问题中发现了另一种语法
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'))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句