我计划使用Python27中的SQLAlchemy将数据提交到MySQL表。当我试图运行此文件时,它显示了以下错误:
sqlalchemy.orm.exc.FlushError: Instance <TravelScheduleDetailRepository at 0x7f0fc07c8950> has a NULL identity key. If this is an auto-generated value, check that the database table allows generation of new primary key values, and that the mapped Column object is configured to expect these generated values. Ensure also that this flush() is not occurring at an inappropriate time, such aswithin a load() event.
接着,它成功地在mysql表中创建了一行,尽管所有列都为空。
这是我的类:
class TravelScheduleDetailRepository(Base):
__tablename__ = 'Schedule_Detail'
schedule_id = Column(String(7), primary_key = True)
transport_id = Column(String(5))
transport_type = Column(String(80))
transport_company_name = Column(String(80))
departure_city_id = Column(String(3))
departure_country_id = Column(String(3))
destination_city_id = Column(String(3))
destination_country_id = Column(String(3))
departure_date = Column(DateTime)
available_seat = Column(Integer, autoincrement=False)
def __init__(self, schedule_id, transport_id, transport_type, transport_company_name, departure_city_id, departure_country_id, destination_city_id, destination_country_id, departure_date, available_seat):
self.schedule_id
self.transport_id
self.transport_type
self.transport_company_name
self.departure_city_id
self.departure_country_id
self.destination_city_id
self.destination_country_id
self.departure_date
self.available_seat
def __repr__(self):
return "<TravelScheduleDetailRepository(schedule_id='%s', transport_id='%s', transport_type='%s', transport_company_name='%s', departure_city_id='%s', departure_country_id='%s', destination_city_id='%s', destination_country_id = '%s', departure_date = '%d', available_seat='%i')>" % ( self.schedule_id, self.transport_id, self.transport_type, self.transport_company_name, self.departure_city_id, self.departure_country_id, self.destination_city_id, self.destination_country_id, self.departure_date, self.available_seat)
以下是如何将它插入到mysql中:
Session = sessionmaker(bind=engine)
session = Session()
newSchedule = TravelScheduleDetailRepository(schedule_id='bbb', transport_id='33', transport_type='Hell', transport_company_name='Slick', departure_city_id='GGG', departure_country_id='FOO', destination_city_id='WWW', destination_country_id='FFF', departure_date='03-03-2011', available_seat=40)
session.add(newSchedule)
session.flush()
session.commit()
谢谢你。