定义一个类,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. 使用Spring提供的缓存抽象机制整合EHCache为项目提供二级缓存

      Spring自身并没有实现缓存解决方案,但是对缓存管理功能提供了声明式的支持,能够与多种流行的缓存实现进行集成. Spring Cache是作用在方法上的(不能理解为只注解在方法上),其核心思想是 ...

  2. Golang 函数

    创建函数 package main import "fmt" //有参数,有返回值 func demo(a int, s string) (int, string) { retur ...

  3. Docker for windows 入门三(PowerShell命令使用)

  4. Smarty 变量修饰器

    为了更方便的实现 功能与显示分离,通常会用 smarty 将功能代码中的数据 assign 到页面中,在页面中合理使用 smarty 的修饰方法,会使页面显示更美观! 一个数据可同时使用多个修饰函数, ...

  5. MySQL在Read Uncommitted级别下写操作加X锁

    很多文章认为MySQL在读未提交(Read Uncommitted)的隔离级别下,写操作是不加锁的,然而实际上并不是,在RU级别下,写操作加有X锁. 实践出真知 以前,我也认为RU隔离级别下,写操作不 ...

  6. python之工作举例:通过复制NC文件来造数据

    # 通过对NC文件复制来造数据 import os, shutil # 遍历的根目录 root_dir = "D:\\test_data\\DISASTER\\" # 获取NC文件 ...

  7. c-lodop云打印实现手机打印 JS语句打印

    Lodop和c-lodop目前只能安装到windows操作系统上,但是其他操作系统可通过向C-Lodop安装的电脑发送打印任务,实现手机广域网或局域网打印,打印语句也是简单的JS语句,可以轻松实现云打 ...

  8. 利用caffe自带的Makefile编译自定义so文件

    1.文件目录结构 caffe-root |--include |--example |--modules |--test.h |--test.cpp |--python |--src |--tools ...

  9. 【Gym 100733D】Little thief Shi(取数,DP)

    题 Shi realized that he was almost out of money, even renting Shitalian lands. Shi was walking on a s ...

  10. 自学Aruba4.2-Aruba AC基础配置(1)

    点击返回:自学Aruba之路 自学Aruba4.2-Aruba AC基础配置(1) 管理员登陆(admin/saic_admin): Cli Web 管理帐号 控制器基础设置: 控制器恢复出厂设置 查 ...