- 52
- 0
@v1.route('/users/register', methods=('POST',))
def users_register():
form = RegisterForm()
if not form.validate_on_submit():
return formate_validate_error(form.errors)
try:
#
user = User()
user.name = form.name.data
user.password = password_encode(form.password.data)
user.email = form.email.data
db.session.add(user)
print(user.id) ## 获取到的是None 这个ID要在这个事物里使用的。
#login_result = login_user(user)
db.session.commit()
# return return_success({
# 'token': login_result['token']
# })
return 'e'
except Exception as e:
db.session.rollback()
return return_err(str(e), status='exception')
执行记录:
[2018-07-24 10:32:39 +0800] [43241] [DEBUG] POST /v1/users/register
2018-07-24 10:32:39,622 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2018-07-24 10:32:39,624 INFO sqlalchemy.engine.base.Engine SELECT count(*) AS count_1
FROM (SELECT users.id AS users_id, users.name AS users_name, users.email AS users_email, users.mobile AS users_mobile, users.password AS users_password, users._2fa AS users__2fa, users.created_at AS users_created_at
FROM users
WHERE lower(users.name) = lower(%(lower_1)s)) AS anon_1
2018-07-24 10:32:39,624 INFO sqlalchemy.engine.base.Engine {'lower_1': 'test1'}
2018-07-24 10:32:39,632 INFO sqlalchemy.engine.base.Engine SELECT count(*) AS count_1
FROM (SELECT users.id AS users_id, users.name AS users_name, users.email AS users_email, users.mobile AS users_mobile, users.password AS users_password, users._2fa AS users__2fa, users.created_at AS users_created_at
FROM users
WHERE lower(users.email) = lower(%(lower_1)s)) AS anon_1
2018-07-24 10:32:39,633 INFO sqlalchemy.engine.base.Engine {'lower_1': 'ffff@asdf.com'}
None
2018-07-24 10:32:39,744 INFO sqlalchemy.engine.base.Engine INSERT INTO users (name, email, password, _2fa, created_at) VALUES (%(name)s, %(email)s, %(password)s, %(_2fa)s, %(created_at)s) RETURNING users.id
2018-07-24 10:32:39,744 INFO sqlalchemy.engine.base.Engine {'name': 'test1', 'email': 'ffff@asdf.com', 'password': '$2b$10$SDhD7crcXoT6Gq/bA6WN2.6cvn3GUyPJxUWa1W37wpy99n1pgoiNW', '_2fa': None, 'created_at': '2018-07-24 02:32:39+00:00'}
2018-07-24 10:32:39,745 INFO sqlalchemy.engine.base.Engine ROLLBACK
获取到个异常:
(psycopg2.IntegrityError) duplicate key value violates unique constraint \"idx_users_email\"\nDETAIL: Key (lower('email'::text))=(email) already exists.\n [SQL: 'INSERT INTO users (name, email, password, _2fa, created_at) VALUES (%(name)s, %(email)s, %(password)s, %(_2fa)s, %(created_at)s) RETURNING users.id'] [parameters: {'name': 'test1', 'email': 'ffff@asdf.com', 'password': '$2b$10$SDhD7crcXoT6Gq/bA6WN2.6cvn3GUyPJxUWa1W37wpy99n1pgoiNW', '_2fa': None, 'created_at': '2018-07-24 02:32:39+00:00'}] (Background on this error at: http://sqlalche.me/e/gkpj)
# models
class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.BigInteger, primary_key=True)
name = db.Column(db.VARCHAR(50), nullable=False)
email = db.Column(db.VARCHAR(200), nullable=False)
# 用户手机 默认为NULL
mobile = db.Column(db.VARCHAR(20), server_default=text('NULL'))
# 登录密码
password = db.Column(db.VARCHAR, nullable=False)
# 两步验证秘钥
_2fa = db.Column(db.VARCHAR(32), nullable=True)
# 注册时间
created_at = db.Column(db.TIMESTAMP(False), nullable=False, server_default=text('now()'))
__table_args__ = (
Index('idx_users_name', func.lower('name'), unique=True),
Index('idx_users_email', func.lower('email'), unique=True)
)
def __init__(self):
if not self.created_at:
self.created_at = now().format()
def __repr__(self):
return '<User %s>' % self.name
但是数据库里确实没有name和email重复的
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
霸气无人能挡 普通会员 1楼
在Flask中,你可以使用
session对象的save()方法来保存数据,然后在之后的查询中使用session.query().你可以在session.query()中使用session.add()方法来添加数据。假设你有一个
User模型,它有一个id字段,你可以这样添加数据:```python from flask import session
session.add(User(id=1, name='John Doe')) ```
然后,你可以使用
session.query()来查询数据:python users = session.query(User).all()在这个查询中,
session.query()会返回所有的User对象,all()方法会返回所有的结果。然后,你可以使用users来获取所有用户的信息。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
