如何将Python / Pandas数据插入规范化数据库

时间:2020-03-17 18:54:55

标签: python sql pandas sqlalchemy database-normalization

说我有一个熊猫数据框,其中记录如下:

Time    Action      User    Company    User2
---------------------------------------------------
00:02   buy share   msmith  ACME       tjones
00:03   sell share  tjones  Alpha      msmith
...

我有一个带有表的数据库:

ActionType (ID INT IDENTITY(1,1), Name VARCHAR)

Users (ID INT IDENTITY(1,1), Username VARCHAR, CompanyID INT FOREIGN KEY)

Companies (ID INT IDENTITY(1,1), CompanyName VARCHAR)

Events (ID INT IDENTITY(1,1), ActionID INT FOREIGN KEY, UserID INT FOREIGN KEY, CompanyID INT FOREIGN KEY, User2ID INT FOREIGN KEY)

我想将数据框插入事件表,但是我希望它存储每一列的关联ID,而不是原始文本。有没有一种方法可以通过SQLAlchemy(或其他RDBMS或ORM包)轻松地做到这一点,或者我是否需要一行一行地设置变量,例如

userid = session.query(Users).filter(Users.Username == df.User) 

或者,通过数据库处理此问题的最佳方法是吗?我可以通过将原始熊猫数据直接插入到“登台”表中,然后使用SQL将数据点拆分到各自的表中来实现。

这似乎可行,我只是想看看是否有更有效的Python解决方案?

奖金(可能是单独的)问题,遇到新值(即df.User不在Users表中,所以我想INSERT INTO Users VALUES ...)时,我该如何在表中输入新值

0 个答案:

没有答案
相关问题