定义一个类,ORM(对象关系映射)将这个类转换为sql语句,使用pymysql进行执行

一,底层处理

使用engine/connectionpooling/dialect进行数据库操作,engine使用connectionpooling连接数据库,然后在通过dialect执行sql语句(SQLAlchemy本身无法操作数据库,其必须以来pymsql等第三方插件,Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API)

pymysql
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://root:root@127.0.0.1:3306/t1",max_overflow=)

二,创建一个单表

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Column,Integer,String
from sqlalchemy import and_,or_
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base engine = create_engine("mysql+pymysql://root:root@127.0.0.1:3306/t1") Base = declarative_base()#生成一个SQLORM基类 class User(Base):
__tablename__ = "users" id = Column(Integer,primary_key=True,autoincrement=True)
name = Column(String())
fullname = Column(String())
password = Column(String()) def __repr__(self):
return "<User(name='%s', fullname='%s',password='%s')>"%(self.name,self.fullname,self.password) Base.metadata.create_all(engine)#创建所有表结构
#Base.metadata.drop_all(engine)#删除所有的表 ed_user = User(name='xiaoyu',fullname='xiaoudaf',password='') MySession = sessionmaker(bind=engine)
session=MySession() #一次加入一条
# session.add(ed_user) #一次加入多条
# session.add_all([
# User(name='daf',fullname='fafwaf',password='fwa'),
# User(name='daf', fullname='fafwaf', password='fwa'),
# User(name='daf', fullname='fafwaf', password='fwa'),
# ])
#
# session.commit() #查询所有
print(session.query(User).all())
#按顺序查询
for row in session.query(User).order_by(User.id):
print(row) #进行过滤
for row in session.query(User).filter(User.name.in_(['xiaoyu',])):
print(row) for row in session.query(User).filter(~User.name.in_(['xiaoyu', ])):
print(row) for row in session.query(User).filter(User.name=='xiaoyu'):
print(row) print(session.query(User).filter(User.name=='xiaoyu').count()) for row in session.query(User).filter(and_(User.name=='daf',User.fullname=='fafwafs')):
print(row) for row in session.query(User).filter(or_(User.name=='daf',User.fullname=='xiaoudafc')):
print(row)

python---ORM之SQLAlchemy(1)的更多相关文章

  1. Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍

    1. 添加一个新对象 前面介绍了映射到实体表的映射类User,如果我们想将其持久化(Persist),那么就需要将这个由User类建立的对象实例添加到我们先前创建的Session会话实例中: 复制代码 ...

  2. python ORM之sqlalchemy

    前沿对象关系映射ORM是在实际应用编程中常用到的技术,它在对象和关系之间建立了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化.简单来说就是开发人员在使用ORM模型编程时,不需 ...

  3. python ORM模块sqlalchemy的使用

    1.安装sqlalchemy pip install sqlalchemy 2.导入必要的包及模块 import sqlalchemy from sqlalchemy.ext.declarative ...

  4. python连接数据库使用SQLAlchemy

    参考python核心编程 ORM(Object Relational Mapper),如果你是一个更愿意操作Python对象而不是SQL查询的程序员,并且仍然希望使用关系型数据库作为你的后端,那么你可 ...

  5. Django和SQLAlchemy,哪个Python ORM更好?

    ORM是什么? 在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的用途. ORM代表对象关系映射.ORM中的每个单词解释了他们在实际项 ...

  6. python(十二)下:ORM框架SQLAlchemy使用学习

    此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...

  7. 【Python】ORM框架SQLAlchemy的使用

    ORM和SQLAlchemy简介 对象关系映射(Object Relational Mapping,简称ORM),简单的来说,ORM是将数据库中的表与面向对象语言中的类建立了一种对应的关系.然后我们操 ...

  8. python的ORM框架SQLAlchemy

    本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业  一.ORM介绍 如果写程序用pymysql和程序交互,那是不是要写原生sql语句 ...

  9. Python与数据库[2] -> 关系对象映射/ORM[0] -> ORM 与 sqlalchemy 模块

    ORM 与 sqlalchemy 1 关于ORM / About ORM 1.1 ORM定义 / Definition of ORM ORM(Object Relational Mapping),即对 ...

  10. Python与数据库[2] -> 关系对象映射/ORM[1] -> sqlalchemy 的基本使用示例

    sqlalchemy 的基本使用示例 下面的例子中将利用sqlalchemy进行数据库的连接,通过orm方式利用类实例属性操作的方式对数据库进行相应操作,同时应用一些常用的函数. 完整代码如下: fr ...

随机推荐

  1. java可变参数长度

    一: 在python中 有可变参数*args和万能参数**args参数分别为列表和字典.在java中也有类似的可变参数列表.不过传递进去的是可变参数数组. package com.company; p ...

  2. net license tool, EasyLicense !

    net license tool, EasyLicense ! 开源 .net license tool, EasyLicense !   介绍: 过去我常常像是否有一个帮助授权的软件,它可以非常简单 ...

  3. octave基本指令1

    octave基本指令1 注释 使用: disp 输出指令 eg: >>a = pi; >>disp(sprintf('2 decimals:%0.2f'a)) 2 decima ...

  4. ES6.0简单了解

    Case 1:let.const var的缺陷 1.可以重复声明变量 2.无法限制修改(没有常量) 3.没有块级作用域 let和const可以弥补var的缺陷 let: 不能重复声明,用来声明变量,声 ...

  5. 设备 VMnet0 上的网桥当前未运行。此虚拟机无法与主机或网络中的其他计算机通信。

    http://www.cnblogs.com/baihuitestsoftware/articles/4223552.html 因为试用Windows10教育版下的Docker打开过Hyper-V,虽 ...

  6. eclipse webproject activiti

    https://stackoverflow.com/questions/42858723/activiti-eclipse-maven-project-to-dynamic-web-project-a ...

  7. Oracle 数据库 Only 导出空表的方法

    1. 之前因为oracle11.2.0.1 的bug(deferred_segment_creation) 引起无法将空表导出. 有时给同事解释上半个小时他们也不知道 如何处理 或者是 他们不会用ex ...

  8. [转帖]速度快散热好 为什么U.2 SSD还没普及?

    速度快散热好 为什么U.2 SSD还没普及?   经典的影视剧中总有那么几位武林高手,江湖上只闻其名,不见其形.今天我们要聊的这位爷,誓要拳打南山M.2,脚踩北海SATA 3!它就是固态硬盘界久负盛名 ...

  9. pip和conda到底有什么不一样?

    今天看到我的foreman开始报错去询问才发现.我们的python包管理工具已经从pip整体迁移到了conda..最近的迁移真的非常多..前端也在迁移打包

  10. Lodop打印条码二维码的一些设置

    Lodop绘制条码图功能让条码打印变得很简单,客户端不用安装专门的条码字库,该函数格式如下:ADD_PRINT_BARCODE(Top,Left,Width,Height,BarCodeType,Ba ...