2016-03-14 77 views
1

我正在構建Flask應用程序,並使用sqlalchemy訪問MySQL數據庫。該數據庫包含所有用戶登錄。數據庫看起來像:sqlalchemy - 使用.csv文件加入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加入數據庫表文件? 我想要返回的用戶登錄列表及其位置。

回答

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條款。

+1

我的問題不是關於將csv轉換爲列表(或可能是更好的選項的字典)。我的問題是sqlalchemy查詢在這種情況下的外觀。我找不到任何與列表連接的例子。 – Galil

+0

通常你會得到可以幫助你像在SQL中一樣直接在csv文件中查詢數據的工具。然而,有很少的庫爲你提供庫來直接從python中的csv文件查詢數據。但是其中一個是[this](https://github.com/harelba/q/blob/generic-injected-streams/PYTHON-API.markdown) –