Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Sqlite:如何基于列选择不存在的记录(行)?_Python_Sqlite - Fatal编程技术网

Python Sqlite:如何基于列选择不存在的记录(行)?

Python Sqlite:如何基于列选择不存在的记录(行)?,python,sqlite,Python,Sqlite,希望大家都过得好 数据库: Value Date --------------------------------- 3000 2019-12-15 6000 2019-12-17 我希望回报的是: “数据:2019年12月15日3000” “2019-12-16无数据”(不存在基于日期的列) “数据:2019年12月17日6000” 我不知道如何根据列筛选不存在的记录(行) 可能的样板代码: db = sqlite3

希望大家都过得好

数据库:

Value               Date
---------------------------------
3000             2019-12-15
6000             2019-12-17
我希望回报的是:

“数据:2019年12月15日3000”

“2019-12-16无数据”(不存在基于日期的列)

“数据:2019年12月17日6000”

我不知道如何根据列筛选不存在的记录(行)

可能的样板代码:

db = sqlite3.connect("Database1.db")
cursor = db.cursor()
cursor.execute("""
SELECT * FROM Table1
WHERE Date >= "2019-12-15" and Date <= "2019-12-17"
""")
entry = cursor.fetchall()
for i in entry:
    if i is None:
        print("No entry found:", i)
    else:
        print("Entry found")
db.close()
db=sqlite3.connect(“Database1.db”)
cursor=db.cursor()
cursor.execute(“”)
从表1中选择*

在日期> =“2019-1215”和“日期< P>”中,您可能处理这个问题的一般方法使用一个称为日历表的东西,它只是一个包含您希望在报表中看到的所有日期的表。
SELECT
    d.dt,
    t.Value
FROM
(
    SELECT '2019-12-15' AS dt UNION ALL
    SELECT '2019-12-16' UNION ALL
    SELECT '2019-12-17'
) d
LEFT JOIN yourTable t
    ON d.dt = t.Date
ORDER BY
    d.dt;

在实践中,如果您长期需要这样做和/或有大量的日期要覆盖,您可以在SQLite数据库中为此目的设置一个真正的日历表。上面的查询只是为了证明概念。

感谢您花时间帮助我。我真的非常感谢!因此,在为另一个fe而奋斗之后w hours,这是我所做的。正如你所建议的,我创建了一个真正的日历表,日期从2019-12-01到2020-12-01。数据库名称:CalendarDates;列名=Date``从CalendarDates左侧选择*加入表1上的表1。Date=CalendarDates.Date``我理解你的意思,但我仍然不知道如何查询正如您可能知道的,我对SQL(或一般编程)非常陌生,所以请尽可能地删除。再次感谢!还有…您有什么问题吗?日历表的整个要点是它会生成丢失的记录。
SELECT*FROM Table1 LEFT JOIN CalendarDates ON Table1.Date=CalendarDates.Date WHERE Table1.Date不存在
我如何将此概念转换为有效的SQL语句?谢谢再一次!您不需要
WHERE
子句,至少不需要您在那里设置的限制。默认情况下,左连接将包括日历表中的每个日期。