python的ORM技术:使用sqlalchemy操作mysql数据库
#!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine, Integer, Date, Float, ForeignKey from sqlalchemy.orm import sessionmaker, relationship from sqlalchemy.ext.declarative import declarative_base ####################################################################################################### ##############初始化数据库连接,返回session ####################################################################################################### def get_session(): # 初始化数据库连接 # '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' engine = create_engine('mysql+pymysql://root:root@10.10.10.11:9000/mysqldb?charset=utf8') DBSession = sessionmaker(bind=engine) # 创建DBSession类型 session = DBSession() return session ####################################################################################################### ##############表格对象创建 ####################################################################################################### ###创建对象的基类: Base = declarative_base() ###定义Asset表对象 class Asset(Base): # 表的名字: __tablename__ = 'hr_asset' # 表的结构: id = Column(Integer, primary_key=True) assetnum = Column(String(50)) assetname = Column(String(50)) assetmodel = Column(String(50)) assettype = Column(Integer) assetstate = Column(Integer) usepersonid = Column(Integer, ForeignKey("hr_user.id")) userperson = relationship("User",backref="asset", uselist=False) ####定义User表对象 class User(Base): # 表的名字: __tablename__ = 'hr_user' # 表的结构: id = Column(Integer, primary_key=True) username = Column(String(50)) age = Column(Integer) degree = Column(String(50)) ####################################################################################################### ##############数据操作模板 ######################################################################################################## ####INSERT插入数据 模板 if __name__ == "__main__": try: # 创建session对象 session1 = get_session() # 创建新表格对象 new_user = User(username='龙九', age=33, degree="本科") # 添加到session session1 .add(new_user) # 提交即保存到数据库 session1 .commit() # 得到新数据id the_id=new_user.id # 关闭session session1 .close() except: pass ####DELETE删除数据 模板 if __name__ == "__main__": try: session2 = get_session() session2.query(User).filter(User.id == '3').delete() session2.commit() session2.close() except: pass ####UPDATE更新数据 模板 if __name__ == "__main__": #模板1 try: session3 = get_session() session3.query(User).filter(User.id == '2').update({User.degree: '高中'}, synchronize_session=False) session3.commit() session3.close() except: pass if __name__ == "__main__": #模板2 try: session3 = get_session() the_user = session3.query(User).get(2) #参数为主键id the_user.username ="小王" the_user.age= 40 the_user.degree ="博士" session3.commit() session3.close() except: pass ####SELECT查询数据之单条数据 模板 if __name__ == "__main__": try: session4 = get_session() user = session4.query(User).filter(User.id == 3).one() #注:这里用one() print('type:', type(user)) print('name:', user.username) session4.close() except: pass ####SELECT查询数据之多条数据 模板 if __name__ == "__main__": try: session5 = get_session() users = session5.query(User).filter(User.id > 0).all() #注:这里用all() for i in range(len(users)): print(users[i].id) print(users[i].username) session5.close() except: pass ####SELECT查询数据之连表查询 模板 if __name__ == "__main__": try: session6 = get_session() assets = session6.query(Asset).join(User).filter(User.id > 0).all() for i in range(len(assets)): pass session6.close() except: pass

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
python-常用模块xml、shelve、configparser、hashlib
一、shelve模块 shelve模块也是用来序列化的. 使用方法: 1.open 2.读写 3.close import shelve # 序列化 sl = shelve.open('shlvetest.txt',) sl['date'] = '8-13' sl.close() # 反序列化 s2 = shelve.open('shlvetest.txt',) print(s2['date']) s2.close() View Code 特点:使用方法简单,提供一个文件名就可以开始读写 读写的方法和字典一致,可以当成自动序列化的字典 注:内部使用的就是pickle,所以也存在跨平台差的问题。自己存的数据只有自己知道如何取,一般用于单击程序 二、XML模块 XML全称为可扩展标记语言,标记符号为<>. XML是为了能够跨平台数据交互。 XML语法格式: 1.任何的起始标签都必须有一个结束标签<tagname> </tagname> 2.可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签,用法为在大于符号之前加一个斜线(/)例如<ta...
- 下一篇
月薪5千加班到凌晨,月薪5万5点下班,高级程序员到底强在哪里?
说起程序员人们的第一印象就是工资高、加班凶、话少钱多头发少。再加上现在科技互联网公司太吃香,bat、华为小米等公司程序员加班情况被广泛传播,程序员用生命在敲代码的印象刻在了很多人的心里。 与其它行业一样,凡是有高级和普通,虽然都是敲代码但也有大牛和普通之分,大牛程序员,一个人比一个团队做项目都做得快,最为出名的当属十几年前求伯君在做wps时,一个人完成了微软二十人团队没有完成的项目需求,也让wps在与微软的竞争中站稳了脚跟。程序员的能力差距真的比贫富的差距还要大。除了能力主要还是和智商有关系。 从工作的方面来说,普通程序员和高级程序员一般有下面几个区别 普通程序员:一、知识体系零散、没有系统性的思维,在写代码、改bug的时候没有工程素养,往往是拆了东墙补西墙。 二、对某种语言的依赖性太强,知识无法很好的迁移,一旦换了语言、或者领域不同就会不知所措 三、经验不足却自认为自己经验丰富,只对自己做过的比较顺手,但是碰到未知的问题,就束手无策 高级程序员一、知识体系完整,有系统性的思维,及时没有到架构师的级别,在写代码和改bug的时候也能从整体上去思考和把握。 二、学习能力强有了自己的心智模型...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库