Как вставить данные JSON в таблицу с соответствующими столбцами в SQLAlchemy? - PullRequest
0 голосов
/ 23 мая 2019

Я хочу вставить данные JSON в таблицу с соответствующими значениями ключей в SQLAlchemy в python. Ниже моя таблица SQLAlchemy:

MODEL

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 (поступающие из пользовательского интерфейса) в таблицу базы данных.

JSON

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

Вот сложная часть. Эти JSON-данные имеют все значения столбца, как указано в таблице выше, за исключением «createat» и «ifieddat ». Я хочу добавить это значение столбца во время вставки с текущими значениями 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...