Я хочу вставить данные 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()