sqlalchemy - 使用.csv文件

时间:2016-03-14 15:33:14

标签: python mysql database csv sqlalchemy

我正在构建Flask应用程序,并使用sqlalchemy访问MySQL数据库。此数据库包含所有用户登录。数据库看起来像:

LoginID (the primary key) | Username | JoinTime | LeaveTime

请注意,可以在很多行中找到用户名(用户在不同时间或天数的不同登录信息)。

我需要生成一些有关登录位置的统计信息,但位置数据仅在Users.csv文件中提供,该文件包含两列:每个用户usernamelocation

我想基于用户名在我的数据库表和Users.csv文件之间建立连接。

我有一个sqlalchemy查询,它返回在两个给定日期之间登录的用户:

logins = db_session.query(Logins.Username). \
    filter(Logins.JoinTime >= session['start_date']). \
    filter(Logins.LeaveTime <= session['end_date']). \
    all()

是否可以修改上述查询并使用Users.csv文件加入数据库表? 我想要一个用户登录列表,并返回其位置。

1 个答案:

答案 0 :(得分:0)

一种方法是使用numpy库的genfromtxt方法将 csv 文件的内容加载为list

from numpy import genfromtxt

def fetch_data(file_name):
    data = genfromtxt(file_name, delimiter=',', skiprows=1, converters={0: lambda s: str(s)})
    return data.tolist()

现在,您可以直接在SQL查询中使用此list,也可以将list保留在MySQL数据库中的单独表中,然后使用传统的JOIN子句。