我想在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()