【发布时间】:2021-06-01 13:49:34
【问题描述】:
我正在尝试执行以下操作:遍历 dict 中的一系列项目,并将每个项目添加到表格的新行中。
由于某种原因,添加仅适用于循环的最后一项。这是我的代码的一部分:
######
# Model of interface_traffic table
class InterfaceTraffic(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
#
network_device_id = db.Column(db.Integer, db.ForeignKey('network_device.id'))
#
interface = db.Column(db.String(50), index=True, unique=False)
traffic_in = db.Column(db.String(10), index=True, unique=False, default=0)
traffic_out = db.Column(db.String(10), index=True, unique=False, default=0)
def __repr__(self):
return '<Interfaces Traffic For NetworkDevice ID: {}>'.format(self.network_device_id)
######
# Object From Models Tables (interface_traffic table)
interface_traffic = InterfaceTraffic()
hostname_for_id = NetworkDevice.query.filter_by(hostname=hostname).first()
# Dict From Method check_interface_traffic(), provided by host Object Instance of Class NetworkElement
traffic_on_interfaces = host.check_interface_traffic()
# Populating Database Params
for interface, traffic in traffic_on_interfaces.items():
# interface_traffic.network_device_id is a foreign key
interface_traffic.network_device_id = hostname_for_id.id
interface_traffic.interface = interface
interface_traffic.traffic_in = traffic[0]
interface_traffic.traffic_out = traffic[1]
db.session.add(interface_traffic)
# I tryed with commit in each loop, but has the same behavior
# db.session.commit()
# I tryed with flush too, but has the same behavior
# db.session.flush()
db.session.commit()
【问题讨论】:
标签: python-3.x for-loop flask sqlalchemy flask-sqlalchemy