【发布时间】:2021-12-26 10:11:24
【问题描述】:
我有一个用户类,然后有一个方法可以将数据保存到数据库中。
class User(db.Model, ExtraMixin):
first_name = db.Column(db.String(50), nullable=False)
last_name = db.Column(db.String(50), nullable=False)
other_names = db.Column(db.String(100), nullable=True)
phone_number = db.Column(db.String(20), unique=True, nullable=False)
email = db.Column(db.String(120), index=True, unique=True, nullable=False)
password = db.Column(db.String(200), nullable=False)
user_type_id = db.Column(db.Integer, db.ForeignKey('user_type.id'))
vendor_id = db.Column(db.Integer, db.ForeignKey('vendor.id'), nullable=True)
vendor = db.relationship('Vendor', primaryjoin="and_(User.vendor_id==Vendor.id)", lazy=True)
def save_to_db(self):
db.session.add(self)
db.session.commit()
由于某种原因,这不起作用。不知道是不是我做错了。
这是调用 save_to_db 方法的地方
def post(self):
data = self.parser.parse_args()
new_user = User(
first_name =data['first_name'],
last_name =data['last_name'],
other_names =data['other_names'],
phone_number =data['phone_number'],
email =data['email'],
password =User.generate_hash(data['password']),
user_type_id =data['user_type_id'],
vendor_id =data['vendor_id'],
created_by =get_jwt_claims()['id']
)
try:
new_user.save_to_db()
return {'message': 'New User {} added'.format(data['first_name'])}
except:
return {'message': 'Internal sever error. Please contact the person responsible'}, 500
【问题讨论】:
-
您是否在代码
user.save_to_db的某处执行?你在数据库中看到user的表了吗? -
是的,在创建新用户时会调用 save_to_db 方法。我在 postgresql 数据库中有用户表,但没有添加用户
-
能不能把调用方法的函数也贴一下?
-
``` def post(self): data = self.parser.parse_args() new_user = User( first_name =data['first_name'], last_name =data['last_name'], other_names = data['other_names'], phone_number =data['phone_number'], email =data['email'], ... ) try: new_user.save_to_db() return {'message': 'New User {} added'。 format(data['first_name'])} except: return {'message': '内部服务器错误。请联系负责人'}, 500 ```
-
您可以查看我的回答,我也添加了您的发帖请求。
标签: python flask-sqlalchemy flask-restful