如何在SQLAlchemy中将JSON数据及其对应的列插入表中?

时间:2019-05-23 14:29:49

标签: python sqlalchemy

我想在python的SQLAlchemy中将JSON数据及其相应的键值插入表中。下面是我的SQLAlchemy表:

模型

db_string ="postgres://user:pwd@10.**.**.***:####/db_table"
db = create_engine(db_string) 

class Layout(Base):
    __table_args__ = {"schema": "col"} 
    __tablename__ = "layout"    #mention table name
    name = Column(String(1000), unique=True, primary_key = True)
    columndata = Column(String(10000), nullable=False)
    gridname = Column(String(100), nullable=False)
    ownername = Column(String, nullable=False)
    createdat = Column(TIMESTAMP, default=(datetime.datetime.now()))
    modifiedat = Column(TIMESTAMP, default=(datetime.datetime.now()))

我有一个JSON数据,也有一个API,我想在其中将JSON数据(来自UI)插入到我的数据库表中。

JSON

{
  "layout": "layout-1",
  "columndata": {
        "colId": "#",
        "hide": false,
        "aggFunc": null,
      },
  },
  "gridname": "RT",
  "ownername": "user_1",
}

这是棘手的部分。 JSON数据具有上表要求的所有列值,但“ createdat”和“ modifieddat”除外。我想在插入时使用当前的TIMESTAMP值添加该列值。我该怎么办? 注意:在下面的API中,数据变量具有我的JSON。

API

class LayoutSave(tornado.web.RequestHandler):
    def post(self):            
        db = create_engine(db_string)
        Session = sessionmaker(db)
        session = Session()
        Base.metadata.create_all(db)

        r = self.request.body     
        data = r.decode('utf8').replace("'",'"')

        # data variable has my JSON 

        session.add(Layout(**data))
        session.commit()
        session.close()

0 个答案:

没有答案