我使用pymysql在python中连接到mysql数据库。我想对日期范围内的每一天运行查询,并将结果附加到数据帧中或直接导出到csv (无论哪种情况都能让我在一个地方获得数据)。
不一定要用熊猫来完成。
到目前为止,我已经尝试了:
import pandas as pd
import pymysql
from datetime import date
dates = [
date(year=2016, month=1, day=12),
date(year=2016, month=1, day=13),
date(year=2016, month=1, day=14),
]
conn = pymysql.connect(...)
cursor = conn.cursor()
frame = []
for date in dates:
query = """SELECT * FROM table WHERE date = {date}""".format(date=date)
cursor.execute(query)
data = cursor.fetchall()
df = pd.DataFrame(list(data))
frame.append(df)
conn.close()或者,为日期尝试类似以下内容:
from datetime import date, timedelta
start = date(2015, 9, 9)
end = date.today()
week = timedelta(days=7)
mydate = start
while mydate < end:
print("{date.day:02}{date.month:02}{date.year}".format(date=mydate))
mydate += week我遇到的麻烦是把所有的东西都正确地拼接在一起,并让它工作。任何帮助都将不胜感激。谢谢
发布于 2019-01-04 22:21:31
尝试执行以下操作以查询数据库并以pandas.DataFrame形式返回结果集
import pandas as pd
import pymysql
from datetime import date
dates = [
date(year=2016, month=1, day=12),
date(year=2016, month=1, day=13),
date(year=2016, month=1, day=14),
]
conn = pymysql.connect(...)
query = """SELECT * FROM table WHERE date IN ({})""".format(','.join(dates))
df = pd.read_sql(query, con=conn)
conn.close()pandas有一个内置的方法,可以利用数据库连接来执行查询,并以pd.DataFrame结构的形式返回查询。然后,您可以运行df.to_csv导出结果。在query变量中,请记住它是一个str类型,因此需要借助python的一些帮助来正确地格式化查询,这就是我们使用的','.join(dates),它将以字符串的形式返回列表元素,并以逗号分隔。请记住,您可能需要转换日期以匹配数据库中存在的任何日期格式。
https://stackoverflow.com/questions/54040534
复制相似问题