python操作mysql(ORM) 发表于 2019-01-14 | 分类于 mysql学习 使用 SQLAlchemy 安装方法pip install SQLAlchemy 更多内容参考flask鱼书项目 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String ,DateTime, Boolean# 连接数据库engine = create_engine('mysql://root:password@localhost:3306/school?charset=utf8')## 编码问题# # 获取基类Base = declarative_base()class News(Base): # 继承基类 __tablename__ = 'students1' id = Column(Integer, primary_key = True) nickname = Column(String(20)) name = Column(String(20), nullable = False) sex = Column(String(1)) in_time = Column(DateTime) is_vaild = Column(Boolean) idcard = Column(Integer, unique = True) News.metadata.create_all(engine) # 创建表格## 新增数据from sqlalchemy.orm import sessionmakerSession = sessionmaker(bind=engine)class OrmTest(object): def __init__(self): self.session = Session() def add_one(self): new_obj = News( nickname = '123', name = '321', sex = '男', ) self.session.add(new_obj) self.session.commit() return new_obj def add_more(self): new_obj = News( nickname = '123', name = '321', sex = '男', ) new_obj2 = News( nickname = 'wei', name = 'lai', sex = '女', ) self.session.add_all([new_obj, new_obj2]) self.session.commit() return new_obj## 查询数据 def get_one(self): return self.session.query(News).get(10) # get 是选id为2的 def get_more(self): return self.session.query(News).filter_by(is_vaild=True)## 修改数据## 将一条当作多条的一种情况 def update_data(self): data_list = self.session.query(News).filter(News.id >= 5) for item in data_list: if item: item.is_vaild = 0 self.session.add(item) # 加入 self.session.commit() # 提交## filter 与 filter_by 的区别## 删除数据 def delete_data(self): data = self.session.query(News).get(8) if data: self.session.delete(data) self.session.commit() else: return False def delete_data_more(self): delete_list = self.session.query(News).filter(News.id <= 5) for item in delete_list: if item: self.session.delete(item) else: return False self.session.commit() def main(): obj = OrmTest() obj.add_one() obj.add_more() data = obj.get_one() ## 防止查询失误 if data: print('ID:{0} {1}'.format(data.id,data.sex)) else: print('Not exist') data_more = obj.get_more() print(data_more.count()) # 计数 for new_obj in data_more: print('ID:{0} {1} {2} {3}'.format(new_obj.id,new_obj.sex,new_obj.name,new_obj.nickname)) obj.update_data() print('数据修改成功') obj.delete_data() print('数据删除成功') obj.delete_data_more()if __name__ == '__main__': main()