我有一個表「城市」定義爲:分配蟒蛇小數對象到MySQL DECIMAL列
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的蟒蛇到這個表映射:如果我理解蟒蛇
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
十進制包正確,這應該工作:
from decimal import *
getcontext().prec = 6
lat = 12.11111111
long = 46.2222222
city = City(1, Decimal(str(lat)), Decimal(str(long)), 0, 0, 0)
但是,我仍然會得到相同的錯誤,因爲我不打電話時D ecimal():
Warning: Data truncated for column 'lat' at row 1
我在做什麼錯在這裏?
只是好奇,爲什麼你重寫__init __的'()',而不是使用'sqlalchemy.types.DECIMAL'?這樣''sqlalchemy'處理所有事情。 – 2013-05-10 19:19:24
我是SQLAlchemy的新手,我見過的所有例子都覆蓋__init__。我搜索了文檔,但無法弄清楚如何按照您的建議進行操作。如果你能給我一個提示,我會很感激。 – kslnet 2013-05-10 19:42:41
您是否訪問過官方文檔?因爲這個頁面上的第一個例子顯示我在說什麼http://docs.sqlalchemy.org/en/rel_0_8/orm/extensions/declarative.html – 2013-05-10 20:00:46