sqlalchemy简单使用

sqlalchemy简单使用

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Filter(Base):
    __tablename__ = 'alcohol'   # 指定表名
    id = Column(Integer, primary_key=True, autoincrement=True)
    id_md = Column("id_md", String(40), index=True, unique=True)
    shop_id = Column("商品ID", String(30), nullable=False)
    room_title = Column("直播场次", String(256), nullable=False)
    begin_time = Column("开始时间", String(30), nullable=False)
    room_finish_time = Column("结束时间", String(30), nullable=False)
    time_long = Column("时长", String(60), nullable=False)
    total_user = Column("观看人次", String(15), nullable=False)
    user_peak = Column("人气峰值", String(15), nullable=False)
    user_value = Column("uv值", String(15), nullable=False)
    product_size = Column("商品数", String(10), nullable=False)
    volume = Column("销量", String(10), nullable=False)
    amount = Column("销售额", String(15), nullable=False)


class MysqlFilter:
    def __init__(self, host='localhost', port=3306, username='root', password='root', db='data'):
        self.username = username
        self.password = password
        self.host = host
        self.port = port
        self.db = db
        self.storage = self.get_storage()

    def get_storage(self):
        """
        返回一个链接对象
        :return:
        """
        try:
            # host = self.db_config.get('mysql').get('host', None)
            # port = self.db_config.get('mysql').get('port', None)
            # db = self.db_config.get('mysql').get('db', None)
            # password = self.db_config.get('mysql').get('password', None)
            # username = self.db_config.get('mysql').get('username', None)
            mysql_url = f'mysql+pymysql://{self.username}:{self.password}@{self.host}:{self.port}/{self.db}?charset=utf8'
            engine = create_engine(mysql_url)
            Base.metadata.create_all(engine)  # 创建表
            session = sessionmaker(bind=engine)
            return session()
        except:
            raise Exception("请确认mysql数据库账号密码和数据库是否配置正确")

    def save(self, item: dict):
        """
        :param hash_value:
        :return:
        """
        session = self.storage
        filter = Filter(
            id_md=item['id_md'],
            shop_id=item['shop_id'],
            room_title=item['room_title'],
            begin_time=item['begin_time'],
            room_finish_time=item['room_finish_time'],
            time_long=item['time_long'],
            total_user=item['total_user'],
            user_peak=item['user_peak'],
            user_value=item['user_value'],
            product_size=item['product_size'],
            volume=item['volume'],
            amount=item['amount']
        )
        session.add(filter)
        session.commit()
        session.close()

    def is_exists(self, item: dict):
        session = self.storage
        ret = session.query(Filter).filter_by(id_md=item['id_md']).first()
        session.close()
        if ret is None:
            return False
        return True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序烂人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值