我正在使用Flask-RESTPlus构建一个简单的REST,以从其特定用户名中获取所有GitHub用户数据。
我得到了JSON格式的结果。 但是现在,我想将结果插入数据库。
我用JSON结果上的键声明了同名的模型列。 这是我的模型的片段:
class User(db.Model):
__tablename__ = "user_v2"
id = db.Column(db.Integer, primary_key=True, index=True)
login = db.Column(db.String, unique=True, index=True)
node_id = db.Column(db.String)
avatar_url = db.Column(db.String)
让我们说API的结果是这样的:
{
"login": "trinanda",
"id": 25479663,
"node_id": "MDQ6VXNlcjI1NDc5NjYz",
"avatar_url": "https://avatars2.githubusercontent.com/u/25479663?v=4"
}
结果上的键与我的模型的列名相同。
我试图用此代码插入结果,但令我感到困惑的是,它使我所有用户列的值都为空。
class UserResource(Resource):
def post(self):
schema = UserSchema()
github_field = request.json
username = github_field.get('username')
github_user_data = get_github_user_data(username)
user = User(**github_user_data)
try:
db.session.add(user)
db.session.commit()
except Exception as e:
return str(e)
return {
'status': 'success',
'user': schema.dump(user).data
}
...我的问题的重点是,如何将JSON结果插入数据库..?
编辑:
这是我的github_user_data
:
import requests
github_scraper_url = 'https://api.github.com/users/'
def get_github_user_data(username):
response = requests.get(github_scraper_url+username)
return response.json()