2017-03-01 25 views
2

App Engine標準ではPython 2しかサポートされておらず、ライブラリは純粋なPythonでなければならないため、SQLAlchemyとpg8000(純粋なpythonではなくpsycopg2とは異なります)を使用してPostgresインスタンスに接続します。接続は問題なく行われますが、挿入が試行されたとき、私は、私は完全には理解していない、次のエラーを取得されています。この動作の原因となるコードのApp Engine StandardのPostgres - 挿入時のエラー

<type 'memoryview'> has type <type 'memoryview'>, but expected one of: str, unicode 

スニペット:

event = self.generate_view(body) 
self.write_event(event, ViewEvent) 

def write_event(self, event, event_model): 
    session = Session() 
    success = False 
    try: 
     new_event = event_model(**event) 
     session.add(new_event) 
     session.commit() 
     logging.info('Generated event {}'.format(event)) 
     success = True 
    except Exception, e: 
     session.rollback() 
     logging.debug('Error inserting event {}'.format(event)) 
     logging.debug('Error was {}'.format(e)) 
    finally: 
     session.close() 
    return success 

どれでもPostgresとApp Engine Standardとの接続が成功した場合は、単にpg8000を使用する以外の方法でも解決できます。

答えて

0

db接続にssl=Trueを追加する必要があります。

pg8000.connect(ssl=True, **config) 

またはSQLAlchemyの中:

create_engine('postgresql+pg8000://user:[email protected]/dbname', connect_args={'ssl': True}, echo=True) 
関連する問題