python - Flask-Sqlalchemy 为 'unique' 整数取非唯一值

标签 python flask flask-sqlalchemy

考虑以下代码:

class User(db.Model):
    id=db.Column(db.Integer,primary_key=True)
    email=db.Column(db.String,unique=True)
    name=db.Column(db.String)
    password=db.Column(db.String)
    registration_num=db.Column(db.Integer,unique=True)

    def __repr__(self):
          return "<Name %r>, <id %r>" %(self.name,self.id)

在这里,我尝试创建一个具有唯一电子邮件 ID(稍后用作登录 ID)和唯一注册号(稍后用作文件夹名称以保存用户提交的数据)的用户。 虽然电子邮件列拒绝非唯一值,但无论我使用相同的注册号创建多少个用户,registration_num 都不会引发任何标志。

下面给出的是用于注册页面的装饰器:

@app.route('/register', methods=['GET','POST'])
def register():
    if request.method == 'POST':
        userpass=request.form["password"]
        usermail=request.form["username"]
        nameofuser=request.form["name"]
        reg_num=int(request.form["r_num"])
        u=models.User(email=usermail,name=nameofuser,password=userpass,registration_num=reg_num)
        db.session.add(u)
        db.session.commit()
        return redirect(url_for('login'))

    return render_template('register_form.html')

我在这里做错了什么?

最佳答案

我想您在数据库中将email声明为UNIQUE,而不是registration_num。在模型中设置 unique=True 不会自动影响数据库,并且 SQLAlchemy 不会检查是否已有某些行具有该值。 unique=True 它由 create_all 或 sqlalchemy-migrate 使用。

关于python - Flask-Sqlalchemy 为 'unique' 整数取非唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29953129/

相关文章:

SQLAlchemy-检查查询是否找到任何结果

python 编码 gzip 字符串

python - 打印包含和排除停用词的文本中 10 个最常出现的词

python - 为什么一个简单的减法会导致不同的输出?

python - Flask API 类型错误 : Object of type 'Response' is not JSON serializable

testing - 试图在 Flask-SQLAlchemy 中模拟模型的问题

python - 从python中的日志文件行中提取数据

要求本地主机时,python urllib2.urlopen 在 Windows 7 上慢得多

python - 如何将嵌套属性编码到架构?

python - 如何从下拉列表中获取值