2016-07-05 4 views
0

SQLAlchemyを使用して、汎用の.csvファイルをmssqlサーバにアップロードするとします。InferカラムタイプSQLAlchemy

どのように各列の種類を推測できますか? {'myvar':Column(Integer)}のように明示的に列を宣言しなければならないようです。 SQLAlchemyや他のライブラリが、各列のデータ型を単独で推論する方法はありますか?

VBには "TransferText"という機能がありますが、これはPythonでやりたいことです。

+0

あなたはクラス 'YourClass'を持っているなら、あなたは私の場合には動作しません。その残念なことに' YourClass.your_attribute.type.python_type' – fedorqui

+0

を確認することができます。一般的な.csvファイルには、タイプ情報やクラス情報はなく、コンマで区切られた文字列のみが含まれています。私は列の数と名前を取得するには、ヘッダーを読んで、デフォルトでは各パラメータがなし、または文字列を入力していないクラスを作ることができます - しかし、文字列が別のデータ型を表す可能性がある場合、私は推測することができません。 –

+0

* *に*をアップロードしていますか?つまり、宛先テーブルから型情報を取得できますか? –

答えて

0

データによっては、単純にast.literal_evalを使用して手を出すことができます。

import ast 

assert isinstance(ast.literal_eval('1'), int) 
assert isinstance(ast.literal_eval('1.0', float) 
assert isinstance(ast.literal_eval('True', bool) 
assert isinstance(ast.literal_eval('"foobar"', basestring) 

またtype_guess方法を提供し、このようなmessytablesなど、もう少し複雑なものを使用することができます。

http://messytables.readthedocs.io/en/latest/

関連する問題