使用 Python SQLAlchemy 将 JSON 发布到数据库
Posted
技术标签:
【中文标题】使用 Python SQLAlchemy 将 JSON 发布到数据库【英文标题】:Post JSON to database with Python SQLAlchemy 【发布时间】:2020-01-10 08:41:31 【问题描述】:我正在尝试将从客户端发布的 JSON 数据添加到我的数据库中,我尝试过的代码是:
@app.route('/postjson', methods=['POST'])
def postEventViewer():
print(request.is_json)
content = request.get_json()
items = []
for item in content:
items.append(item['Values'])
items.append(item['Count'])
items.append(item['Group'])
items.append(item['Name'])
values = item['Values']
count = item['Count']
group = item['Group']
name = item['Name']
engine.execute('INSERT INTO EventViewer (Values, Count, Group, Name) VALUES (:value, :count, :group, :name)', value=values, count=count, group=group, name=name)
这给了我以下错误:
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "Values": syntax error
但是在等效数据库中使用具有较少参数的相同代码可以正常工作,并且可以按预期添加到数据库中:
engine.execute('INSERT INTO person (name, balance) VALUES (:name, :balance)', name=name, balance=count)
我在这里做错了什么?谢谢!
【问题讨论】:
【参考方案1】:此错误是因为Values
是sql
中的保留关键字。您需要将其用双引号括起来以将其视为列名。
编辑
您还有一个关键字用作列名,即Group
。您还需要将其用双引号括起来。
试试下面的查询。
@app.route('/postjson', methods=['POST'])
def postEventViewer():
print(request.is_json)
content = request.get_json()
items = []
for item in content:
items.append(item['Values'])
items.append(item['Count'])
items.append(item['Group'])
items.append(item['Name'])
values = item['Values']
count = item['Count']
group = item['Group']
name = item['Name']
engine.execute('INSERT INTO EventViewer ("Values", Count, "Group", Name) VALUES (:value, :count, :group, :name)', value=values, count=count, group=group, name=name)
【讨论】:
以上是关于使用 Python SQLAlchemy 将 JSON 发布到数据库的主要内容,如果未能解决你的问题,请参考以下文章