Скажем, у меня есть Pandas фрейм данных с записями, такими как:
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)
Я хочу вставить фрейм данных в таблицу событий, но я хочу, чтобы он сохранил связанный идентификатор для каждого столбца, а не необработанный текст. Есть ли способ легко сделать это через SQLAlchemy (или другие пакеты RDBMS или ORM), или мне нужно go строка за строкой и установить переменные, такие как
userid = session.query(Users).filter(Users.Username == df.User)
В качестве альтернативы, это лучший способ справиться с этим через базу данных? Я мог бы выполнить это sh, вставив необработанные данные pandas непосредственно в промежуточную таблицу, а затем разделить точки данных на соответствующие таблицы, используя SQL.
Это кажется выполнимым, я просто смотрю, есть ли более эффективное решение через Python?
Бонус (возможно, отдельный) вопрос, как бы я go о вводе нового значения в таблицы, когда оно встречается ( т.е. df.User отсутствует в таблице Users, поэтому я хочу INSERT INTO Users VALUES ...
)