所以我试图使用cdecimal在我的数据库中存储货币值.
SQLAlchemy Doc
import sys import cdecimal sys.modules["decimal"] = cdecimal
sqlalchemy.url = postgresql+psycopg2://user:password@host:port/dbname
我已经设置了这样的模型:
class Exchange(Base): amount = Column(Numeric) ... def __init__(self,amount): self.amount = cdecimal.Decimal(amount)
但是,每当我这样做时,我都会收到以下错误:
ProgrammingError: (ProgrammingError) can't adapt type 'cdecimal.Decimal' 'INSERT INTO...
我究竟做错了什么?
解决方法
这个适合我,请试试这个
import sys import cdecimal sys.modules["decimal"] = cdecimal from sqlalchemy import create_engine,Numeric,Integer,Column from sqlalchemy.ext.declarative import declarative_base engine = create_engine('MysqL://test:test@localhost/test1') Base = declarative_base() class Exchange(Base): __tablename__ = 'exchange' id = Column(Integer,primary_key=True) amount = Column(Numeric(10,2)) def __init__(self,amount): self.amount = cdecimal.Decimal(amount) Base.Metadata.create_all(engine) from sqlalchemy.orm import sessionmaker Session = sessionmaker(bind=engine) session = Session() x = Exchange(10.5) session.add(x) session.commit()