zoukankan      html  css  js  c++  java
  • 使用orm—sqlalchemy

      1 from sqlalchemy.orm import sessionmaker
      2 from sqlalchemy import create_engine
      3 from sqlalchemy.ext.declarative import declarative_base
      4 from sqlalchemy import Column, Integer, String, DateTime, Boolean
      5 
      6 engine = create_engine('mysql://root:@localhost:3306/news?charset=utf8')
      7 Base = declarative_base()
      8 Session = sessionmaker(bind=engine)
      9 
     10 
     11 class News(Base):
     12     __tablename__ = 'news'
     13     id = Column(Integer, primary_key=True)
     14     title = Column(String(200), nullable=False)
     15     content = Column(String(20000), nullable=False)
     16     created_at = Column(DateTime)
     17     types = Column(String(10), nullable=False)
     18     author = Column(String(20))
     19     view_count = Column(Integer)
     20     is_valid = Column(Boolean)
     21 
     22 
     23 class OrmText(object):
     24     def __init__(self):
     25         self.session = Session()
     26 
     27     def add_one(self):
     28         """新增一条记录"""
     29         try:
     30             orm_obj = News(
     31                 title='伊朗感染新冠病毒人数达9000人',
     32                 content='新闻内容',
     33                 types='百家',
     34             )
     35             self.session.add(orm_obj)
     36             self.session.commit()
     37             return orm_obj
     38         except:
     39             print('Error')
     40             self.session.rollback()
     41 
     42     def get_one(self):
     43         """获取一条数据"""
     44         return self.session.query(News).get(6)
     45 
     46     def get_more(self):
     47         """获取多条数据"""
     48         return self.session.query(News).filter_by(is_valid=True)
     49 
     50     def get_all(self):
     51         """获取所有数据"""
     52         list = []
     53         for sert in self.session.query(News).all():
     54             list.append(sert)
     55         return list
     56 
     57     def update_data(self, update_id):
     58         """修改数据"""
     59         obj = self.session.query(News).get(update_id)
     60         if obj:
     61             obj.title = '全球市场进入暴跌模式 至少11国发生“熔断”'
     62             self.session.add(obj)
     63             self.session.commit()
     64             return True
     65         else:
     66             return False
     67 
     68     def delete_data(self, delete_id):
     69         """删除数据"""
     70         data = self.session.query(News).get(delete_id)
     71         self.session.delete(data)
     72         self.session.commit()
     73 
     74 # 建表语句
     75 News.metadata.create_all(engine)
     76 
     77 # 添加数据
     78 obj = OrmText()
     79 rest = obj.add_one()
     80 print(rest.id)
     81 
     82 # 获取一条记录
     83 rest = obj.get_one()
     84 if rest:
     85     print('%s:%s' % (rest.id, rest.title))
     86 else:
     87     print("数据不存在")
     88 
     89 # 获取多条数据
     90 obj = OrmText()
     91 rest = obj.get_more()
     92 print(rest.count())
     93 print(rest)
     94 for i in rest:
     95     print('%s:%s' % (i.id, i.title))
     96 
     97 # 获取所有数据
     98 obj = OrmText()
     99 for i in obj.get_all():
    100     print(i.id, i.title)
    101 
    102 # 修改数据
    103 obj = OrmText()
    104 text = obj.update_data(3)
    105 print(text)
    106 
    107 # 删除数据
    108 data = OrmText()
    109 data.delete_data(7) 
  • 相关阅读:
    解决安装python3后yum不能使用情况
    一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB
    nginx 的基本配置与虚拟主机配置
    /etc/nginx/nginx.conf配置文件详解
    简单使用ab命令压力测试
    死锁和死锁检测
    centos7下搭建消息中间件--RocketMQ
    Centos7.2配置https
    Mysql 通过binlog日志恢复数据
    MySQL主从复制+备份
  • 原文地址:https://www.cnblogs.com/zzmx0/p/12514320.html
Copyright © 2011-2022 走看看