如果没有样板代码,如何将pandas系列的内容分配给sqlAlchemy类实例?

2024-09-29 07:35:49 发布

您现在位置:Python中文网/ 问答频道 /正文

对于下面的示例,我必须将pandas系列的每个字段分配给类实例

有没有什么方法可以在一个步骤中做到这一点(比如:abc = Abc(series)

import pandas as pd
from sqlalchemy import Column, Integer, String, Boolean
from sqlalchemy.dialects.mysql import DATETIME
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Abc(Base):
    __tablename__ = 'abc'

    runId = Column(Integer, primary_key=True)
    runComment = Column(String(255))
    dateTimeProcessed = Column(DATETIME(fsp=6))
    status = Column(Boolean, nullable=False)

df = pd.DataFrame({"runId": [1, 2, 3], "runComment": [4, 5, 6],"dateTimeProcessed": [1, 2, 3], "status": [1, 2, 3], })

series = df.iloc[0]

abc = Abc(runId=series.runId,
          runComment=series.runComment,
          dateTimeProcessed=series.dateTimeProcessed,
          status=series.status)

Tags: fromimportpandassqlalchemystatuscolumnintegerseries
1条回答
网友
1楼 · 发布于 2024-09-29 07:35:49

pandas.Series对象是映射,您可以使用关键字参数解包,即“双splat”:

In [1]: import pandas as pd

In [2]: df = pd.DataFrame({"runId": [1, 2, 3], "runComment": [4, 5, 6],"dateTimeProcessed": [1, 2, 3], "status": [1, 2, 3], })

In [3]: series = df.iloc[0]

In [4]: class Abc:
   ...:     def __init__(self, runId, runComment, dateTimeProcessed, status):
   ...:         self.runId = runId
   ...:         self.runComment = runComment
   ...:         self.dateTimeProcessed = dateTimeProcessed
   ...:         self.status = status
   ...:

In [5]: a = Abc(**series)

In [6]: a.runId
Out[6]: 1

In [7]: a.dateTimeProcessed
Out[7]: 1

In [8]: a.runComment
Out[8]: 4

相关问题 更多 >