【问题标题】:sqlalchemy - join MySQL table with .csv filesqlalchemy - 使用 .csv 文件加入 MySQL 表
【发布时间】:2016-03-14 15:33:13
【问题描述】:

我正在构建一个 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 文件连接起来? 我想要返回用户登录列表及其位置。

【问题讨论】:

    标签: python mysql database csv sqlalchemy


    【解决方案1】:

    一种方法是使用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()
    

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

    【讨论】:

    • 我的问题不是关于将 csv 转换为列表(或可能是更好选择的字典)。我的问题是在这种情况下 sqlalchemy 查询的外观如何。我找不到任何带有列表的join 示例。
    • 通常你会得到一些工具来帮助你直接在 csv 文件中查询数据,就像在 SQL 中一样。然而,很少有库可以为您提供直接从 python 中的 csv 文件查询数据的库。其中之一是this
    猜你喜欢
    • 2016-09-06
    • 2017-04-19
    • 2016-06-05
    • 1970-01-01
    • 2014-07-12
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多