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

做网站为什么可以自学wordpress wp editor

做网站为什么可以自学,wordpress wp editor,免费网址推荐,培训机构官网目录11.SQLAlchemy11.1 简介11.2 安装11.3 基本使用11.4 连接11.5 数据类型11.6 执行原生sql11.7 插入数据11. 8 删改操作11.9 查询11.SQLAlchemy 11.1 简介 SQLAlchemy的是Python的SQL工具包和对象关系映射#xff0c;给应用程序开发者提供SQL的强大功能和灵活性。它提供了… 目录11.SQLAlchemy11.1 简介11.2 安装11.3 基本使用11.4 连接11.5 数据类型11.6 执行原生sql11.7 插入数据11. 8 删改操作11.9 查询11.SQLAlchemy 11.1 简介 SQLAlchemy的是Python的SQL工具包和对象关系映射给应用程序开发者提供SQL的强大功能和灵活性。它提供了一套完整的企业级的持久性模式专为高效率和高性能的数据库访问改编成简单的Python的领域语言。 SQLAlchemy是Python界的ORMObject Relational Mapper框架它两个主要的组件 SQLAlchemy ORM 和 SQLAlchemy Core 。 11.2 安装 pip install SQLAlchemy11.3 基本使用 创建表 类使用声明式至少需要一个__tablename__属性定义数据库表名字并至少一Column是主键 # SQLAlchemy练习 from sqlalchemy import create_engine from sqlalchemy import Column, Integer, String, UniqueConstraint, Index from sqlalchemy.ext.declarative import declarative_base # declarative_base类维持了一个从类到表的关系通常一个应用使用一个base实例所有实体类都应该继承此类对象Base declarative_base()# 类使用声明式至少需要一个__tablename__属性定义数据库表名字并至少一Column是主键 # 创建单表 class User(Base):__tablename__ usersid Column(Integer, primary_keyTrue, autoincrementTrue)name Column(String(32))extra Column(String(16))def init_db():# 数据库链接引擎engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)# 创建表Base.metadata.create_all(engine)def drop_db():engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)# 删除表Base.metadata.drop_all(engine)if __name__ __main__:init_db()# drop_db()插入数据 # SQLAlchemy练习 import models from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 数据库链接引擎 engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)se sessionmaker(bindengine) session se()u1 models.User(namea1, extraaa) u2 models.User(namea2, extrabb)session.add(u1) session.add(u2)session.commit() # session.rollback() # 回滚session.rollback()表示回滚 11.4 连接 SQLAlchemy 把一个引擎的源表示为一个连同设定引擎选项的可选字符串参数的 URI。URI 的形式是: dialectdriver://username:passwordhost:port/database该字符串中的许多部分是可选的。如果没有指定驱动器会选择默认的确保在这种情况下 不 包含 。 Postgres: postgresql://scott:tigerlocalhost/mydatabaseMySQL: mysql://scott:tigerlocalhost/mydatabaseOracle:oracle: //scott:tiger127.0.0.1:1521/sidnameSQLite (注意开头的四个斜线): sqlite:absolute/path/to/foo.db11.5 数据类型 SQLAlchemy列选项 11.6 执行原生sql from sqlalchemy import create_engineengine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)# 执行SQL cur engine.execute(select * from users )# 获取第一行数据 re1 cur.fetchone() # 获取第n行数据 # re2 cur.fetchmany(2) # 获取所有数据 re3 cur.fetchall()print(re3) # 注意当执行fetchone()后数据已经被去除一条了即使fetchall()取出的数据也是从第二条数据开始的engine.execute默认使用了数据库连接池也可以使用DBUtils pymysql做连接池 11.7 插入数据 创建如下表供后面增删改查使用。 models2.py # sqlalchemy创建多个关联表 from sqlalchemy import create_engine from sqlalchemy import Column, Integer, String, UniqueConstraint, Index, DateTime, ForeignKey from sqlalchemy.ext.declarative import declarative_base import datetimeBase declarative_base()class Classes(Base):__tablename__ classesid Column(Integer, primary_keyTrue, autoincrementTrue)name Column(String(32), nullableFalse, uniqueTrue)class Student(Base):__tablename__ studentid Column(Integer, primary_keyTrue, autoincrementTrue)username Column(String(32), nullableFalse, uniqueTrue)password Column(String(32), nullableFalse)ctime Column(DateTime, defaultdatetime.datetime.now) # 注意now后不要加()# 外键对应的班级class_id Column(Integer, ForeignKey(classes.id))class Hobby(Base):__tablename__ hobbyid Column(Integer, primary_keyTrue, autoincrementTrue)caption Column(String(32), default篮球)# 建立多对多的关系 class Student2Hobby(Base):__tablename__ student2hobbyid Column(Integer, primary_keyTrue, autoincrementTrue)student_id Column(Integer, ForeignKey(student.id))hobby_id Column(Integer, ForeignKey(hobby.id))# 增加联合唯一索引__table_args__ (UniqueConstraint(student_id, hobby_id, nameuni_student_id_hobby_id),)def init_db():# 数据库链接引擎engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)# 创建表Base.metadata.create_all(engine)def drop_db():engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)# 删除表Base.metadata.drop_all(engine)if __name__ __main__:init_db()# drop_db()上面创建完表后开始执行插入操作 # sqlalchemy的增删改查import models2 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 数据库链接引擎 engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)se sessionmaker(bindengine) session se()# 单条增加 # c1 models2.Classes(namepython入门) # session.add(c1) # session.commit() # session.close()# 多条增加 # c2 [ # models2.Classes(namepython进阶), # models2.Classes(namepython高级), # models2.Classes(namepython web) # ] # session.add_all(c2) # session.commit() # session.close() 11. 8 删改操作 # sqlalchemy的增删改查import models2 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker# 数据库链接引擎 engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)se sessionmaker(bindengine) session se()# 删除 # session.query(models2.Classes).filter(models2.Classes.id 2).delete() # session.commit()# 修改 # session.query(models2.Classes).filter(models2.Classes.id 2).update({name : 099}) session.query(models2.Classes).filter(models2.Classes.id 2).update({models2.Classes.name: models2.Classes.name 099}, synchronize_sessionFalse) synchronize_session False # 对字段执行字符串操作 # session.query(models2.Classes).filter(models2.Classes.id 2).update({num: models2.Classes.num 1}, synchronize_sessionevaluate) # synchronize_session evaluate # 对字段执行数值型操作 session.commit()11.9 查询 参考Flask-SQLAlchemy - 武沛齐 - 博客园 (cnblogs.com) 1.以下的方法都是返回一个新的查询需要配合执行器使用。 filter(): 过滤功能比较强大多表关联查询。 filter_by()过滤一般用在单表查询的过滤场景。 order_by()排序。默认是升序降序需要导包from sqlalchemy import * 。然后引入desc方法。比如order_by(desc(“email”)).按照邮箱字母的降序排序。 group_by()分组。 2.以下都是一些常用的执行器配合上面的过滤器使用。 get()获得id等于几的函数。 比如查询id1的对象。 get(1)切记括号里没有“id”直接传入id的数值就ok。因为该函数的功能就是查询主键等于几的对象。 all()查询所有的数据。 first()查询第一个数据。 count()返回查询结果的数量。 paginate()分页查询返回一个分页对象。 paginate(参数1参数2参数3)参数1当前是第几页参数2每页显示几条记录参数3是否要返回错误。 返回的分页对象有三个属性items获得查询的结果pages获得一共有多少页page获得当前页。 3.常用的逻辑符 需要导入包才能用的有from sqlalchemy import * not_、and_、or_ 还有上面说的排序desc。 常用的内置的有in_表示某个字段在什么范围之中。 4.其他关系的一些数据库查询 endswith()以什么结尾。 startswith()以什么开头。 contains()包含 # sqlalchemy的增删改查import models2 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.sql import text# 数据库链接引擎 engine create_engine(mysqlpymysql://root:root127.0.0.1:3306/flask01?charsetutf8, max_overflow5)se sessionmaker(bindengine) session se()# 查询r1 session.query(models2.Classes).all() # 返回models2.Classes对象# label相当于sql里的as取别名后面结果集使用也是使用别名 r2 session.query(models2.Classes.name.label(xx), models2.Classes.name).all()# 查询课程名字为python入门的课程 r3 session.query(models2.Classes).filter(models2.Classes.name python入门).all() # 也可使用filter_by注意filter_by的传参和filter不一样 r4 session.query(models2.Classes).filter_by(namepython入门).all()# 查询课程名字为python入门的课程的第一个 r5 session.query(models2.Classes).filter_by(namepython入门).first()# 查询id2且课程名字为python入门的课程 r6 session.query(models2.Classes).filter(text(id:value and name:name)).params(value2, namepython入门).order_by(models2.Classes.id).all()# from_statement相当于子查询 r7 session.query(models2.Classes).from_statement(text(SELECT * FROM Classes where name:name)).params(namepython入门).all()print(r7) session.close() # 注意除了r2其他结果都为models2.Classes对象# 条件 ret session.query(Users).filter_by(namealex).all() ret session.query(Users).filter(Users.id 1, Users.name eric).all() ret session.query(Users).filter(Users.id.between(1, 3), Users.name eric).all() ret session.query(Users).filter(Users.id.in_([1,3,4])).all() ret session.query(Users).filter(~Users.id.in_([1,3,4])).all() ret session.query(Users).filter(Users.id.in_(session.query(Users.id).filter_by(nameeric))).all() from sqlalchemy import and_, or_ ret session.query(Users).filter(and_(Users.id 3, Users.name eric)).all() ret session.query(Users).filter(or_(Users.id 2, Users.name eric)).all() ret session.query(Users).filter(or_(Users.id 2,and_(Users.name eric, Users.id 3),Users.extra ! )).all()# 通配符 ret session.query(Users).filter(Users.name.like(e%)).all() ret session.query(Users).filter(~Users.name.like(e%)).all()# 限制 ret session.query(Users)[1:2]# 排序 ret session.query(Users).order_by(Users.name.desc()).all() ret session.query(Users).order_by(Users.name.desc(), Users.id.asc()).all()# 分组 from sqlalchemy.sql import funcret session.query(Users).group_by(Users.extra).all() ret session.query(func.max(Users.id),func.sum(Users.id),func.min(Users.id)).group_by(Users.name).all()ret session.query(func.max(Users.id),func.sum(Users.id),func.min(Users.id)).group_by(Users.name).having(func.min(Users.id) 2).all()# 连表ret session.query(Users, Favor).filter(Users.id Favor.nid).all() # 默认使用外键进行连表 ret session.query(Person).join(Favor).all() # 内连接ret session.query(Person).join(Favor, isouterTrue).all() # 左连接# 组合 q1 session.query(Users.name).filter(Users.id 2) q2 session.query(Favor.caption).filter(Favor.nid 2) ret q1.union(q2).all()q1 session.query(Users.name).filter(Users.id 2) q2 session.query(Favor.caption).filter(Favor.nid 2) ret q1.union_all(q2).all() 参考 https://blog.csdn.net/u011146423/article/details/87605812 ​ Python开发【第十九篇】Python操作MySQL - 武沛齐 - 博客园 (cnblogs.com) ​ SQLAlchemy 学习笔记_JP.Zhang-CSDN博客
http://www.w-s-a.com/news/144198/

相关文章:

  • 深圳网站关键词优化公司哪家好怎么选择锦州网站建设
  • 标准网站优势项目合作网站
  • 无人机东莞网站建设wordpress站群管理破解版
  • 深圳企业官网网站建设教育培训学校
  • 医疗网站建设及优化西安网站建设开发公司
  • 网站建设详细流程ydg wordpress theme
  • 湖北黄石域名注册网站建设编程网站项目做哪个比较好
  • 旺道网站排名优化咸阳建设网站
  • 建设一个类似淘宝的网站律师做推广宣传的网站
  • 东阳网站建设方案网站建设asp
  • 模板网站建设一条龙平面设计师招聘信息
  • 制作一个网站流程企业建设网站的母的
  • 九州建网站网页游戏平台代理
  • 培训课程网站网上下载的网站模板怎么用
  • 重庆山艺网站建设塘厦理工学校
  • 做网站的人叫什么软件玩具网站设计
  • 网站说服力营销型网站策划 pdf深圳有什么公司名称
  • 做物流的可以在那些网站找客户男生晚上正能量你懂我意思
  • 宁德市城乡住房建设厅网站教育机构logo
  • 做定制网站价格有网站了怎么做app
  • 做网站和制作网页的区别北京朝阳区最好的小区
  • 网站策划 ppt北京装修公司排名推荐
  • 郑州网站建设公司哪家专业好如何注册一家公司
  • 证券投资网站做哪些内容滨州论坛网站建设
  • 重庆网站建设公司模板广东佛山
  • 中展建设股份有限公司网站做网站备案是什么意思
  • 石家庄网站建设接单wordpress功能小工具
  • 有没有专门做网站的网站镜像上传到域名空间
  • 网站建设中 windows买域名自己做网站
  • 设计英语宁波seo做排名