Car*_*cia 5 python sqlite pandas
我正在尝试使用 python pandas 从 sqlite 查询表以在 jupyter notebook 中进行分析。目标是在我每次运行脚本时选择的两个日期之间进行查询。
我已经在这个链接中尝试过:
和
在最后一个链接中,脚本执行良好,但我加载的数据框中没有任何数据。
当我在 SQLite 中手动执行时,编写如下内容:
SELECT *
FROM 'Historique'
WHERE "index" BETWEEN "2018-12-10 00:00:00" AND "2019-01-01 00:00:00"
Run Code Online (Sandbox Code Playgroud)
查询工作正常,它给了我我想要的值。所以就是那个python,我认为它不能识别我发送的参数。
我的代码是:
import pandas as pd
import sqlite3
conn = sqlite3.connect('FR033_Historique.sqlite')
cur = conn.cursor()
start = input("First day to take")
start = pd.to_datetime(start, dayfirst=True)
end = input("last day to take")
end = pd.to_datetime(end, dayfirst=True)
Analyse = pd.read_sql(('SELECT *'
'FROM "Historique"'
'WHERE "index" BETWEEN %(dstart)s AND %(dfinish)s'),
con=conn, params={"dstart":start,"dfinish":end})
Run Code Online (Sandbox Code Playgroud)
我得到的结果是,如果我把它放在 SQLite 中,python 可以很好地读取查询并给出我想要的值的间隔,但我会每次获取日期并自动搜索它。
我希望我说清楚!谢谢!
您的命名参数传递语法错误。请参阅sqlite3 文档中的示例:
Run Code Online (Sandbox Code Playgroud)# And this is the named style: cur.execute("select * from people where name_last=:who and age=:age", {"who": who, "age": age})
所以对于你的情况应该是:
query = '''SELECT *
FROM "Historique"
WHERE "index" BETWEEN :dstart AND :dfinish'''
pd.read_sql(query, con=conn, params={"dstart":start, "dfinish":end})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1077 次 |
| 最近记录: |