2017-06-28 14 views
0

私はデータベースとしてPostgreSQLを使用している単純なフラスコアプリケーションを作成しようとしています。私は、ボタンをクリックしたときに、テーブルの行を更新しようとしていますが、それは私に次のエラーPostgreSQLで更新クエリを実行中にsqlalchemy.exc.DataError

DataError: (psycopg2.DataError) invalid input syntax for integer: "125/" LINE 1: ...ATE tasks SET taskname='IamUpdated' WHERE tasks.uid = '125/'^[SQL: 'UPDATE tasks SET taskname=%(taskname)s WHERE tasks.uid = %(uid_1)s'] [parameters: {'taskname': 'IamUpdated', 'uid_1': u'125/'}]

を与えていることは、「/」グリッチなどの末尾に追加された場合、私はわからないか、そのようなことになっています?またはそれがエラーを引き起こす原因です。 助けてください。続き

は私の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> 
後、私のフラスコ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()) 

です

+0

editIdがどこから来ているかを確認する必要があります。あなたのテンプレートに誤りがあると思われます。 – Shadow

+0

@ shadow私がHTMLコード – Prasanna

答えて

1

あなたの問題は、ここでは、このタグのようだ:

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

HTML内のすべての値は文字列です。したがって、それらはすべて引用されなければなりません。

value="{{user.uid}}" 

これを実行すると、HTMLは推測ではなく、値に含めることを意味するものを正確に認識します。

これが他のフィールドに影響を与えない理由は、値と数値の間にスペースを入れなかった唯一の時間なのでです。

0

エラーは、入力タグの最後に「/>」があるためです。それは不必要でした。私はそれを削除し、今は正常に動作しています。

+0

を追加したことを確認してくださいこれは技術的には機能しますが、実際の問題には対処できません。詳細は私の答えを見てください。 – Shadow

関連する問題