2017-02-07 20 views
1

私は小さなテストプログラムにSQLiteを使用していましたが、最近はPostgresに移行しました。しかし、今私はデータベースにユーザーを追加しようとすると問題が発生します。私はPostgresだけでSQLite上でこの問題を起こさなかった。フラスコ/ sqlalchemy _init_()DBエントリを追加するときにTypeError?

My DBスキーム。

class User(UserMixin, db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True, nullable=False) 
    username = db.Column(db.String(64), index=True, nullable=False, unique=True) 
    password = db.Column(db.String(128), nullable=False) 
    user_roles = db.Column(db.String(64), nullable=False) 

エントリを追加しようとするときのフォーム。

username = request.form['email'] 
plain_pass = request.form['pass'] 
hash_pass = hash_password(plain_pass) 
role = 'instructor' 
add_user = User(username=username, 
       password=hash_pass, 
       user_roles=role) # This is the line from the error 
# I can browse the DB and I know the that table/column is created 
# In pyCharm it comes up as an unexpected argument? 
db.session.add(add_user) 
db.session.commit() 

ここでは完全なトレースです。

Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1994, in __call__ 
    return self.wsgi_app(environ, start_response) 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1985, in wsgi_app 
    response = self.handle_exception(e) 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1540, in handle_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python34\lib\site-packages\flask\_compat.py", line 33, in reraise 
    raise value 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1517, in handle_user_exception 
    reraise(exc_type, exc_value, tb) 
    File "C:\Python34\lib\site-packages\flask\_compat.py", line 33, in reraise 
    raise value 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request 
    rv = self.dispatch_request() 
    File "C:\Python34\lib\site-packages\flask\app.py", line 1598, in dispatch_request 
    return self.view_functions[rule.endpoint](**req.view_args) 
    File "C:\Users\chrisutpg\Desktop\Programing\UTPPv2\app\mod_auth\views.py", line 18, in show_signup 
    forms.Signup() 
    File "C:\Users\chrisutpg\Desktop\Programing\UTPPv2\app\mod_auth\forms.py", line 15, in Signup 
    user_roles=role) 
TypeError: __init__() got an unexpected keyword argument 'user_roles' 

私はかなり困惑しています。 user_rolesを他の名前に変更しようとしましたが、私はまだ同じ問題を抱えています。

ご協力いただければ幸いです。

+0

はい、それは正しく借りています。ちょうどフォーマットの問題を私はそれを投稿した。私はそれを反映するように編集します。私はそれが修正の容易だったことを望む! –

答えて

0

私はあなたから__init__()メソッドを継承している場所がわからないんだけど、あなたが明示的に定義した場合、それは可能性の高い問題を解決します:

class User(UserMixin, db.Model): 
    __tablename__ = 'users' 
    id = db.Column(db.Integer, primary_key=True, nullable=False) 
    username = db.Column(db.String(64), index=True, nullable=False, unique=True) 
    password = db.Column(db.String(128), nullable=False) 
    user_roles = db.Column(db.String(64), nullable=False) 

    def __init__(self, **kwargs): 
     self.username = kwargs.get('username') 
     self.password = kwargs.get('password') 
     self.user_roles = kwargs.get('user_roles') 

私はここに**kwargsを使用していますが、あなたが使用することができます通常の位置引数も同様です。

+0

回答としてマークされています。はい、これは起こっていたことでした。ありがとうございました! –

関連する問題