2017-10-16 25 views
0

を持っていない私はこのチュートリアルからコードスニペットを使用しようとしていた。 http://newcoder.io/scrape/part-4/SQLAlchemyの1.2はAttributeError:「リスト」オブジェクトが属性「セッション」

次は、クラス定義を含むファイルです:

from sqlalchemy.orm import sessionmaker 
from .models import Deals, db_connect, create_deals_table 

class Test(object): 

    def __init__(self, args): 
     """ 
     Initializes database connection and sessionmaker. 
     Creates deals table. 
     """ 
     engine = db_connect() 
     create_deals_table(engine) 
     self.Session = sessionmaker(bind=engine) 

    def add_item(self): 

     session = self.Session() 

     tester = Deals(title="test 3 deal",location='here', price=2.00) 
     session.add(tester) 
     session.commit() 

Test.add_item(args)を呼び出すと、次のエラーが生成されます。

(sql) [[email protected] heap]$ python heap.py test Traceback (most 
recent call last): File "heap.py", line 13, in <module> 
    main(sys.argv) File "heap.py", line 8, in main 
    Test.add_item(args) File "/home/bucket/src/heap/game/engine.py", line 17, in add_item 
    session = self.Session() AttributeError: 'list' object has no attribute 'Session' 

コードは正常に動作し、クラス定義のないPythonスクリプトと同じコードを実行したときに行が追加されました。

答えて

0

あなたは、クラス自体のインスタンスメソッドを呼び出すしようとしている:Test.add_item(args)

あなただけselfなしパラメータを有するような方法を定義します。これは、クラスのインスタンス上でそれを呼び出す必要があり、そしてそれをあなたがlist引数args取得して関数を呼び出しているので

test = Test() 
test.add_item() 

あなたがその特定のエラーを取得している理由は、引数を渡さないことを意味しパラメータselfとして使用され、self.Session()行がオブジェクトから属性Sessionを取得しようとしています。メソッド定義またはその呼び出しを修正する必要があります(例:def add_item(self, args):

関連する問題