python sqlalchemy 数据表迁移到新文件新表中(新增列)

from sqlalchemy import create_engine,func,Column, Integer, String, FLOAT
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
class dy_author:
    base=declarative_base()
    base2=declarative_base()
    class table2(base):
        __tablename__ = 'old'
        id = Column(String, primary_key=True)
        author= Column(String)
        title = Column(String) 
        url = Column(String)
        ctime = Column(Integer) 
        like = Column(Integer) 
        pinglun = Column(Integer) 
        share = Column(Integer) 
    class table2(base2):
        __tablename__ = 'a'
        id = Column(String, primary_key=True)
        author= Column(String)
        title = Column(String) 

        url = Column(String)
        ctime = Column(Integer) 

        like = Column(Integer) 
        pinglun = Column(Integer) 
        share = Column(Integer) 

        loc=Column(String) 
        update=Column(String) 
        van=Column(String) 

    def __init__(self) -> None:
        db_file='{}{}\\{}'.format('sqlite:///',r'X:\库\文档\py_all\database','author2.db')
        self.engine = create_engine(db_file)
        self.base.metadata.create_all(self.engine)

        db_file='{}{}\\{}'.format('sqlite:///',r'X:\库\文档\py_all\database','dydb.db')
        self.engine2 = create_engine(db_file)
        self.base2.metadata.create_all(self.engine2)
        self.move()
        print(self.db_sta())

    def move(self):
        old=self.acquire_session()
        new=self.acquire_session(old=False)
        all=old.query(self.table2).all()
        for itema in all:
            item=self.table2()
            item.id,item.author,item.title, item.url,item.ctime,  item.share,item.like,item.pinglun=itema.id,itema.author,itema.title, itema.url,itema.ctime,  itema.share,itema.like,itema.pinglun
            new.add(item)
        new.commit()
        pass
    # def 
    def acquire_session(self,old=True):
        if old:
            Session = sessionmaker(bind=self.engine)
            session = Session()
        else:
            Session = sessionmaker(bind=self.engine2)
            session = Session()
        return session
    def db_sta(self):
        session=self.acquire_session(old=False)
        full=session.query(func.count(self.table2.ctime)).all()[0][0]
        all=session.query(func.count(self.table2.id)).all()[0][0]
        msg='{}/{}'.format(full,all)
        return msg
           
    

dy_author()
        
posted @ 2022-05-17 18:33  caiusxin  阅读(157)  评论(0)    收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css