找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 4792|回复: 4

[求助] flask 表单重复提交 数据库插入问题

4

主题

11

帖子

11

积分

贫民

积分
11
heheforpython 发表于 2017-1-4 17:44:04 | 显示全部楼层 |阅读模式
本帖最后由 heheforpython 于 2017-1-4 17:47 编辑

复制代码

def hostPassword():
    form = HostPassWordSimpleForm()
    if form.validate_on_submit():
        ip = form.ipPort.data
        user = form.username.data
        password = form.password.data
        hostpassword = Hostpassword(ip, user, password)
        print ip,user,password
        if Hostpassword.query.filter_by(ip_port=ip,
                                        username=user).first():
            return '添加失败,该主机对应用户已存在!'
        else:
            try:
                db.session.add(hostpassword)
                db.session.commit()
            except Exception, e:
                return '数据库错误%s' % e
            return '添加成功!'
    return render_template('hostpassword.html', form=form)
上面是后台处理的代码,表单提交使用了ajaxSubmit,现在有这样一个问题
1.这个函数完成数据库插入信息,重复时不插入
2.我在多次提交相同数据时,发现数据库会插入多条相同数据,并且我也查看了数据库的数据都是重复的已存在的,但是flask运行if Hostpassword.query.filter_by(..)时flask认为返回的是false,结果就插入了很多相同的数据,这个是什么回事呢,求解
3.当我把浏览器缓存清空时可以正常运行,但是重复插入新数据时还是会有2的问题

回复

使用道具 举报

4

主题

11

帖子

11

积分

贫民

积分
11
heheforpython  楼主| 发表于 2017-1-4 18:12:48 | 显示全部楼层
经过下面打印测试发现
a=Hostpassword.query.all()
            print len(a)
            for i in a:
                print i.username,i.ip_port,i,password

数据库数据已经添加,但是Hostpassword.query.all()的返回值一直不变,都是第一次查询后的值
这个是缓存么还是什么求解
回复 支持 反对

使用道具 举报

4

主题

11

帖子

11

积分

贫民

积分
11
heheforpython  楼主| 发表于 2017-1-4 23:54:37 | 显示全部楼层
上面第3步写错了不是清空缓存而是重启flask
回复 支持 反对

使用道具 举报

4

主题

11

帖子

11

积分

贫民

积分
11
heheforpython  楼主| 发表于 2017-1-5 00:08:03 | 显示全部楼层
本帖最后由 heheforpython 于 2017-1-5 10:49 编辑


有问题
回复

使用道具 举报

4

主题

11

帖子

11

积分

贫民

积分
11
heheforpython  楼主| 发表于 2017-1-5 12:40:19 | 显示全部楼层
最后通过修改查询代码解决
把model.query()改为session.query(model)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表