当前位置: 首页 > news >正文

连平网站建设铁门关市建设局网站

连平网站建设,铁门关市建设局网站,个人网站主页建设教程,优化的含义是什么ORM,对象关系映射#xff0c;即Object Relational Mapping的简称#xff0c;通过ORM框架将编程语言中的对象模型与数据库的关系模型建立映射关系#xff0c;这样做的目的#xff1a;简化sql语言操作数据库的繁琐过程(原生sql的编写及拼接等)#xff0c;转而直接使用对象模…ORM,对象关系映射即Object Relational Mapping的简称通过ORM框架将编程语言中的对象模型与数据库的关系模型建立映射关系这样做的目的简化sql语言操作数据库的繁琐过程(原生sql的编写及拼接等)转而直接使用对象模型来操作数据库做替代第一部分SqlAlchemy本身无法直接操作数据库它是建立在第三方数据库API(如python 中的pymysql库)之上应用程序调用对象模型进行增删改查等操作时将对象转化成sql语句然后再通过API调用执行已经转换好的sql语句安装pip install sqlalchemypip install pymysql #这里笔者使用的数据API是pymysql应用- 配置及创建数据库引擎SqlAlchemy 支持间接调用多种数据库API根据不能的配置文件调用不同的数据库API#常见配置文件即database url创建数据库引擎需要MySQL-Pythonmysqlmysqldb://:[:]/pymysqlmysqlpymysql://:/[?]MySQL-Connectormysqlmysqlconnector://:[:]/cx_Oracleoraclecx_oracle://user:passhost:port/dbname[?keyvaluekeyvalue...]- 创建数据库引擎* 注意 *带上charsetutf8参数防止中文乱码#初始化数据库连接from sqlalchemy import create_engineurlmysqlpymysql://[账号]:[密码][主机]:[端口]/[数据库]?charsetutf8 #这里笔者使用的mysql数据库pymysql API与数据库交互,添加的charset可防止中文乱码enginecreate_engine(url,echoFalse,encodingutf-8) #url为配置文件echo调试参数值为为true打印整个sql执行过程- 创建会话(session)通过sessionmaker工厂方法我们得到一个类默认返回Session类也可以自定义Session类方法sessionmaker( bindNone, class_Session, autoflushTrue,autocommitFalse,expire_on_commitTrue,infoNone, **kw)#示例1直接调用sessionmakerfrom sqlalchemy.orm import sessionmakerSessionClasssessionmaker(bindengine)#利用工厂模式获取SessionClasssession_objSessionClass() #创建session对象,此时已绑定数据库引擎但是未关联任何的对象模型#示例1使用scoped_sessionfrom sqlalchemy.orm import scoped_sessionSessionClassscoped_session(sessionmaker(bindengine))#利用工厂模式获取SessionClasssession_objSessionClass() #创建session对象,此时已绑定数据库引擎但是未关联任何的对象模型scoped_session VS SessionSession多次创建的Session对象是不同的scoped_session首先通过sessionmaker工厂创建Session对象然后对Session对象进行相应的管理(先在Registry中找之前是否创建过Session若没有则创建并注册有则直接返回)这样的目的同一个线程维护一个session对象保证了线程的安全性- 与数据库交互常用操作与sql语言一致主要是增删改查接下来就简要概述这4大类******* 增 *******session.add(object) #在数据库中增加一个对象实例session.add_all([object]) #在数据库中增加多个对象实例,参数为列表形式session.commit() #提交否则未入口******* 查 *******#备注以下均已object代表对象模型object.prop代表对象object的prop属性session.query(object) #查询object对应的关系表相当于select * from tablessession.query(object).first() #查询结果取第一条没有返回nonesession.query(object).filter(object.prop) #条件查询filter相当于wheresession.query(object).order_by(object.prop) #排序默认升序降序用descsession.query(object).order_by(object.prop.desc()).limit(10) #降序及限制10条session.query(object.prop.label(别名)).filter(object.prop.like(%同同mony)) #模糊查询及给字段取别名#使用聚合函数sum、count等from sqlalchemy import funcsession.query(func.sum(object.prop).label(别名)******* 改 *******session.query(object).filter(object.prop20).update({prop1: values})#批量更新若没有过滤条件这更新表中所有记录myuser Session.query(object).filter(object.prop20).first()object.prop2 value2 #单条更新可直接修改对象session.commit()******* 删 *******res session.query(object).filter(object.prop20).delete()session.commit()第二部分掌握了基本概念和使用为了更高效、更快捷将关系表转化成对象不得不提sqlacodegen工具a.安装pip install sqlacodegenb.使用sqlacodegen url [opts]这里的url就是sqlalchemy中create_engine使用的参数但是当账号密码含有特殊字符时同样的url在sqlacodegen命令中会报错识别不出账号、密码、端口等信息此时可通过给账号和密码加引号解决opts--tables TABLES 指定表默认将所有表转化成对象--noindexes 忽略索引--noviews 忽略视图--noclasses 不生成类仅生成表--outfile OUTFILE 输出文件示例sqlacodegen --noviews --noconstraints --noclasses --noindexes --outfile 对应py文件路径 url【同create engine处使用的】注意 当账号和密码包含特殊字符时需要用引号否则自动识别不出账号、密码、端口等信息示例1#不使用 --noclasses导出的对象from sqlalchemy import BIGINT, Column, DateTime, Float, String, textfrom sqlalchemy.dialects.mysql.types import TINYINTfrom sqlalchemy.ext.declarative import declarative_baseBase declarative_base()metadata Base.metadataclass TDeviceActivate(Base):__tablename__ t_device_activateid Column(BIGINT(10), nullableFalse)user_id Column(BIGINT(10), nullableFalse)device_id Column(String(32), primary_keyTrue, nullableFalse)mac Column(String(30))uuid Column(String(32))firmware_type Column(String(16), primary_keyTrue, nullableFalse)activate_time Column(DateTime, nullableFalse)create_date Column(DateTime, nullableFalse)ip_address Column(String(50))longitude Column(Float(10))latitude Column(Float(10))expires_time Column(DateTime)type Column(TINYINT(10), server_defaulttext(1))示例2#使用 --noclasses参数导出的对象from sqlalchemy import BIGINT, Column, DateTime, Float, MetaData, String, Table, textfrom sqlalchemy.dialects.mysql.types import TINYINTmetadata MetaData()t_t_device_activate Table(t_device_activate, metadata,Column(id, BIGINT(10), nullableFalse),Column(user_id, BIGINT(10), nullableFalse),Column(device_id, String(32), primary_keyTrue, nullableFalse),Column(mac, String(30)),Column(uuid, String(32)),Column(firmware_type, String(16), primary_keyTrue, nullableFalse),Column(activate_time, DateTime, nullableFalse),Column(create_date, DateTime, nullableFalse),Column(ip_address, String(50)),Column(longitude, Float(10)),Column(latitude, Float(10)),Column(expires_time, DateTime),Column(type, TINYINT(10), server_defaulttext(1)))总结在UI回归测试脚本中通常涉及到与数据库打交道开始时候主要使用pymysql API 与数据交互但是随着使用频率的增加直接书写sql变得繁琐便尝试使用orm的方式
http://www.huolong8.cn/news/361684/

相关文章:

  • 营销型门户网站wordpress建站导航
  • 老渔哥网站建设公司曼联对利物浦新闻
  • 公司的服务器能建设网站吗东莞大岭山
  • 佛山专业网站制作网站目录提交
  • 网站做支付功能上海建网站开发公
  • 网站被降权了wordpress 分类权限
  • 多个网站集成在一个页面东莞人才信息网官网
  • 百度怎么做开锁网站集安网站建设
  • 网页制作公司需要什么资质营口网站seo
  • 重庆建设工程信息网站龙岩天宫山攻略
  • 长沙网站建设价广告策划的目的是什么
  • 17网站一起做网店普宁池尾雅晨公众号推广一个6元
  • 那些做面点的网站好wordpress去除cat
  • 网站正在建设中的英文建筑类专业做教育的网站
  • 爱建站大全网线下营销推广方式有哪些
  • 佛山网站制作网页制作做动态图表的网站
  • 网站建设阿胶膏的作用广州 美容 公司 网站建设
  • 安庆市住房和城乡建设局网站衡水做企业网站的价格
  • asp网站改成php南京中如建设公司
  • 成都双流网站建设网站 色彩
  • 免费正能量网站下载wwwordpress站群管理
  • 二级域名网站查询芜湖做网站
  • ui交互设计师主要做什么的成都优化网站厂家
  • 湖南企业网站建设惠州做网站开发
  • 有关天猫网站开发的论文长春网络公司查找垚鑫科技
  • c2c网站设计网站建设需求表格
  • 建站技术博客自己上传图片做动漫图网站
  • 合肥建设银行招聘网站百度云架设网站
  • 饿了么网站怎么做的做网站建设有哪些公司好
  • 内蒙古自治区建设厅网站首页wordpress 主题.分页