【发布时间】:2022-01-14 17:10:45
【问题描述】:
问题
我有一个带有两个表 bt 和数据的 sqlite3 数据库。 两个表都包含格式为 YYYY-MM-DD 的日期列。 我已经阅读了一张作为熊猫 df 的表格。
我需要遍历 df 中的行并返回该行中日期的 14 天内的行数。
我尝试过的代码
import sqlite3 as lite
import pandas as pd
#Function to Create DB Connection and Raise Error
def create_connection(db_file):
""" create a database connection to the SQLite database
specified by db_file
:param db_file: database file
:return: Connection object or None
"""
conn = None
try:
conn = lite.connect(db_file)
return conn
except lite.Error as e:
print(e)
return conn
#Creat Connection to DB and Create df
conn = create_connection('test.db')
df = pd.read_sql("Select * from data;", conn)
#Create Cursor
cur = conn.cursor()
#Iterate over rows in df and return count of rows within date range
for index ,row in df.iterrows():
cur.execute("SELECT count(*) FROM bt WHERE id='{}' AND datetime(btdate) BETWEEN datetime('{}') AND datetime('{}', '-15 day');".format(row['id'], row['date'], row['date']))
print(cur.fetchall())
电流输出
上述查询返回全 0,但我知道表中存在满足此条件的行。
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
[(0,)]
所需的输出 我想要的输出是两个日期之间的行数。
【问题讨论】:
标签: python sql pandas sqlite between