2017-12-04 3 views
0

私はPython-Flask、SQL Alchemy、& Postgres qith psycopg2パッケージを使ってプロジェクトを進めています。 プロジェクトはデータベースにデータを正常に保存しますが、オブジェクトをリフレッシュするときに "Unknown PG数値タイプ25"というエラーがスローされます。不明なPG数値型25

 project.second_payment_percent = int(request.form.get("second_payment_percent", 0)) if request.form.get("second_payment_percent", 0) else 0 
     project.second_payment_before = int(request.form.get("second_payment_before", 120)) 
     project.currency_id = int(request.form.get("currency_code")) 
     project.security_deposit = int(request.form.get("security_deposit", 0)) 
     project.apa = int(request.form.get("apa", 0)) 
     project.vat_schema_id = request.form.get("vat_schema") if request.form.get("vat_schema", 0) else None 

     if project.apa > 0: 
      project.security_deposit = int(project.project_price) * int(project.apa)/100 

     db.session.add(project) 
     db.session.commit() 
     db.session.refresh(project) 
     db.session.flush() 

私が手にエラーが

File "<project directory>utils/app_views.py", line 56, in decorated 
return f(*args, **kwargs) 
File "<project directory>views/admin/project.py", line 347, in admin_products_save_accommodation 
db.session.refresh(project) 
File "<project directory>models/project.py", line 297, in serialize 
reviews, avg_rating = self.reviews 
File "<project directory>models/project.py", line 269, in reviews 
robj = db.session.query(ProjectReviews).filter_by(product_id=self.id).order_by('time_created').all() 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 237, in __get__ 
return self.impl.get(instance_state(instance), dict_) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/attributes.py", line 578, in get 
value = state._load_expired(state, passive) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/state.py", line 474, in _load_expired 
self.manager.deferred_scalar_loader(self, toload) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 664, in load_scalar_attributes 
only_load_props=attribute_names) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/loading.py", line 219, in load_on_ident 
return q.one() 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2693, in one 
ret = list(self) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2736, in __iter__ 
return self._execute_and_instances(context) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/orm/query.py", line 2751, in _execute_and_instances 
result = conn.execute(querycontext.statement, self._params) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 914, in execute 
return meth(self, multiparams, params) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/sql/elements.py", line 323, in _execute_on_connection 
return connection._execute_clauseelement(self, multiparams, params) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1010, in _execute_clauseelement 
compiled_sql, distilled_params 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/base.py", line 1161, in _execute_context 
result = context.get_result_proxy() 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 474, in get_result_proxy 
return _result.ResultProxy(self) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/result.py", line 495, in __init__ 
self._init_metadata() 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/result.py", line 524, in _init_metadata 
self._metadata = ResultMetaData(self, metadata) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/result.py", line 221, in __init__ 
in enumerate(result_columns) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/engine/default.py", line 764, in get_result_processor 
return type_._cached_result_processor(self.dialect, coltype) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/sql/type_api.py", line 392, in _cached_result_processor 
d[coltype] = rp = d['impl'].result_processor(dialect, coltype) 
File "<venv path>lib/python2.7/site-packages/sqlalchemy/dialects/postgresql/psycopg2.py", line 361, in result_processor 
"Unknown PG numeric type: %d" % coltype) 
InvalidRequestError: Unknown PG numeric type: 25 

である私は多くのことを試みたが、失敗しています。

+0

[MCVE] 'robj = db.session.query(ProjectReviews).filter_by(PRODUCT_ID = self.id).order_by( 'TIME_CREATED')に基づいてを提供する。すべての()'してください。トリガーは 'self.id'だけで自動リフレッシュを引き起こす可能性がありますので、モデルを提供してください。 –

+0

これは、SQLAlchemyのデータ型 'float'がpostgresに' VARCHAR'として作成されました。 –

答えて

1

テーブルのいずれかのフィールドがテキストで、数値として取得しようとしているようです。

postgres=# select * from pg_type where oid = 25; 
-[ RECORD 1 ]--+--------- 
typname  | text 
+0

これは、SQLAlchemyのデータ型 'float'がpostgresに' VARCHAR'として作成されました。 –

関連する問題