zoukankan      html  css  js  c++  java
  • sqlAlchemy搭建sqliteOrm

    一:引入文件

    from sqlalchemy import Column, Integer, VARCHAR, Text
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker
    
    Base = declarative_base() #构造基类

    二:表结构

    class TiKu(Base):
        __tablename__ = 'spider_tiku'
        id = Column(Integer(), primary_key=True, autoincrement=True)
        kaoshi = Column(VARCHAR(200), nullable=True)
        subject = Column(VARCHAR(200), nullable=True)
        chapter = Column(VARCHAR(200), nullable=True)
        section = Column(VARCHAR(200), nullable=True)
        tixing = Column(VARCHAR(20), nullable=True)
        question_case = Column(Text(), nullable=True)
        question = Column(Text, nullable=True)
        a = Column(VARCHAR(1000), nullable=True)
        b = Column(VARCHAR(1000), nullable=True)
        c = Column(VARCHAR(1000), nullable=True)
        d = Column(VARCHAR(1000), nullable=True)
        e = Column(VARCHAR(1000), nullable=True)
        other_sections = Column(VARCHAR(3000), nullable=True)
        answer = Column(VARCHAR(500), nullable=True)
        analysis = Column(Text(), nullable=True)
        source = Column(Text(), nullable=True)
    
        def __str__(self):
            return '< {} {} {}>'.format(self.kaoshi, self.subject, self.chapter)

    三:sqlite orm

    class SqliteOrm(object):
    
        def __init__(self, path):
            sqlite_path = 'sqlite:///{}'.format(path)
            self.engine = create_engine(sqlite_path)
            Session = sessionmaker(bind=self.engine)
            self.session = Session()
    
        def create_table(self):
            self.drop_table()
            Base.metadata.create_all(self.engine)
    
        def insert(self, obj):
            # 将该实例插入到表
            self.session.add(obj)
            self.session.commit()
    
        def insert_many(self, batch_data: list):
            # 一次插入多条记录形式
            self.session.add_all(batch_data)
            self.session.commit()
    
        def drop_table(self, table_name='spider_tiku'):
            try:
                self.execute_sql('drop table %s' % table_name)
            except Exception as e:
                pass
    
        def execute_sql(self, sql):
            self.session.execute(sql)
  • 相关阅读:
    Mac OS X配置环境变量
    react navite 学习资料
    协议是人造的交互(通信)规则
    语言的本质是更好的对客观世界作出抽象和描述
    编程语言评价标准:冯诺伊曼体系
    afnetwork moya 都符合通信协议七层模型
    Async/await promise实现
    协程 和 async await
    phpStorm字体大小无法调整, 怎么办?
    Composer常见问题
  • 原文地址:https://www.cnblogs.com/li1992/p/11307504.html
Copyright © 2011-2022 走看看