2017-03-14 7 views
0

データフレームからSQLデータベースのサンドボックステーブルにデータを書き込もうとしています。 dfのデータの例を以下に示します。sqlalchemy-pythonを使用してNULL値を処理する

rank type  id    lp   olp 
0  A   823L02X   24.95  NULL 
1  B   823M00B   39.95  NULL 
2  C   823M00B   39.95  12.95 

次のコードは、データフレーム内のすべてのデータが宛先の列に指定されたdtypeに準拠している限り正常に動作します。私も書いているテーブルで

connect_string = r'<user>:<password>@<host>/<databasename>' 
db = create_engine('mysql+mysqldb://' + connect_string) 
df.to_sql(name=<table_name>, con=db, if_exists='append', index=True) 

、列のLPとOLPは、小数点以下のDTYPEを持っている - しかし、NULL値が含まれているデータフレーム内のいくつかの値があります。これらのNULL値は、私がテーブルに書き込もうとするたびにエラーを投げています - 私はsqlがNULLを認識するのではなく文字列として扱うと思います。

sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1366, "Incorrect decimal value: 'NULL' for column 'olp' at row 1") 

私はHeidiSQLでインポートツールを使用して、CSVファイルとしてこのデータフレームをエクスポートし、その後、手動でテーブルにそれをアップロードした場合、プログラムは自動的にNULL値を認識し、問題はありません。

どのようにsqlalchemyを使用して同じ結果を得ることができますか?

答えて

0

通常、SQLAlchemyは、nullのDB値にはPython値Noneを使用することを想定しています。あなたが必要とするのは、入力値がPythonのNoneに正しくマーシャルされているかどうかを確認することだけです。

関連する問題