在Postgresql中执行更新查询时sqlalchemy.exc.DataError

时间:2017-06-28 01:53:39

标签: python postgresql sqlalchemy flask-sqlalchemy

我正在尝试编写一个简单的烧瓶应用程序,其中我使用Postgresql作为数据库。我正在尝试更新按钮单击时的表行,但它给了我以下错误

  

DataError:(psycopg2.DataError)整数的输入语法无效:“125 /”LINE 1:... ATE任务SET taskname ='IamUpdated'WHER tasks.uid ='125 /'^ [SQL:'UPDATE tasks SET taskname =%(taskname)s WHERE tasks.uid =%(uid_1)s'] [参数:{'taskname':'IamUpdated','uid_1':u'125 /'}]

我不确定它是否在最后添加“/”作为故障或它应该是那样的?或那是导致错误的原因。 请帮助。

以下是我的Flask Python代码

edituser = request.form.getlist('editId')
        if edituser:
            for e in edituser:
                User.query.filter_by(uid=e).update(dict(taskname="IamUpdated"))
            db.session.commit()
            return render_template("index.html",User=User.query.all())

以下是我的HTML代码

                                                                     

<form action="" method="POST">

    <div ng-controller="myctrl" >

     <table>
        <caption> Todo List</caption>
            <thead>
                <tr>
                    <td>
                        <input type="text" name="text">
                        <input type="submit"  value="Add Task" >

                    </td><td>
                    Search :<input type="text"> 

                    </td>
                </tr>
                <tr>
                    <th>Task Id</th>
                    <th>Task</th>
                </tr>
            </thead>

            <tbody>

                {% for user in User %}
                <tr>
                    <td> {{ user.uid }} </td>
                    <td >{{ user.taskname }} 
                        <input type="image" class="deleteImg" src="static/img/trash_can.png" height="15px" width="18px" name="removeId" value={{user.uid}} /> 
                         <input type="image" src="static/img/editbtn.svg"  height="15px" width="18px" name="editId" value={{user.uid}}/>

                    </td>
                </tr>
                {% endfor %}
            </tbody>
        </table>
    </div>

    <script>

    var app = angular.module("app", ['xeditable']);
    app.controller('myctrl', function($scope) {
    $scope.myname="Howdy";       
    });
    app.config(function($interpolateProvider) {
        $interpolateProvider.startSymbol('//').endSymbol('//');
    });

    app.run(function(editableOptions) {
        editableOptions.theme = 'bs3'; // bootstrap3 theme. Can be also 'bs2', 'default'
    });
    </script>  
 </form> 
</body>

2 个答案:

答案 0 :(得分:1)

你的问题似乎是这个标签:

<input type="image" src="static/img/editbtn.svg"  height="15px" width="18px" name="editId" value={{user.uid}}/>

html中的所有值都是字符串。因此,他们都必须被引用。

value="{{user.uid}}"

完成此操作后,HTML会确切地知道您要包含在值中的内容,而不是猜测。

这对其他字段没有影响的原因是因为这是您没有在值和数字之间留出空格的唯一时间。

答案 1 :(得分:0)

错误是因为我有&#34; /&gt;&#34;在输入标记的末尾。没必要。我删除了它,现在它工作正常。