使用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) 
原文地址:https://www.cnblogs.com/zzmx0/p/12514320.html