次のように定義されたテーブル「City」があります。
CREATE TABLE `City` (
`id` int(11) NOT NULL,
`lat` decimal(9,6) default NULL,
`long` decimal(9,6) default NULL,
`lm_index` int(11) default NULL,
`num_business` int(11) default NULL,
`postal_code` varchar(16) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
SQLAlchemy で python を使用して、このテーブルをマップします。
Base = declarative_base(engine)
class City(Base):
''''''
__tablename__ = 'City'
__table_args__ = {'autoload':True}
def __init__(self, id, lat, long, lm_index, numbiz, postal):
self.id = id
self.lat = lat
self.long = long
self.lm_index = lm_index
self.num_business = numbiz
self.postal_code = postal
Python decimal パッケージを正しく理解していれば、これでうまくいくはずです:
from decimal import *
getcontext().prec = 6
lat = 12.11111111
long = 46.2222222
city = City(1, Decimal(str(lat)), Decimal(str(long)), 0, 0, 0)
ただし、Decimal() を呼び出さない場合と同じエラーが発生します。
Warning: Data truncated for column 'lat' at row 1
ここで何が間違っていますか?