批量插入关联数据问题
来源:4-7 通过ORM修改和删除数据
Dod_Annie
2019-01-11
现在我需要批量插入一张表的数据,(比如User表),现在需求是每创建一个user之前,就要在另一张表(比如Record表)创建一条数据,并且将record.id作为user的必填字段,才能创建user,现在要用sqlalchemy.orm批量插入user(一次sesson.commit),请问该如何处理?
写回答
1回答
-
首先你要在ORM模型中定义主外键关系
给你一个例子你参考下:
#!/usr/bin/python #coding=utf-8 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker from sqlalchemy import Column, Integer, String, DateTime, \ Boolean, ForeignKey from sqlalchemy.orm import relationship, backref engine = create_engine("mysql://root:@127.0.0.1:3306/news?charset=utf8") Session = sessionmaker(bind=engine) Base = declarative_base() class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) name = Column(String(20)) # 一对多 news = relationship('News', backref='news', lazy='dynamic') class News(Base): ''' 新闻类型 ''' __tablename__ = 'news' id = Column(Integer, primary_key=True) title = Column(String(200), nullable=False) content = Column(String(2000), nullable=False) types = Column(String(10), nullable=False) image = Column(String(300)) author = Column(String(20)) view_count = Column(Integer) created_at = Column(DateTime) is_valid = Column(Boolean) user_id = Column(Integer, ForeignKey('user.id')) class MysqlOrmTest(object): def __init__(self): self.session = Session() def add_one(self): ''' 添加数据 ''' user = User(name='张三2') new_obj = News( title='ORM标题', content='content', types="百家" ) user.news.append(new_obj) self.session.add(new_obj) self.session.commit() return new_obj
你也可以参考这个文档:
https://docs.sqlalchemy.org/en/latest/orm/basic_relationships.html#association-object
012019-01-14
Python操作三大主流数据库-MySQL+MongoDB+Redis
一次实战同时掌握Python操作MySQL,MongoDB,Redis 三大数据库使用技巧
2024 学习 · 376 问题
相似问题