@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')
執(zhí)行記錄:
[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
但是數(shù)據(jù)庫里確實沒有name和email重復(fù)的
在網(wǎng)上搜到的,可以看看https://www.crifan.com/sqlalc...
在commit提交之前db.session.flush()
再打印對象的id可以獲得新增的ID
choice = Choice(name=name, right=right)
db.session.add(choice)
db.session.flush()
print("choice: ", choice.id)
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負責(zé)iOS教學(xué)及管理工作。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。