用a*my写原味sql

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine Base = declarative_base() # 创建单表
class Users(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(32))
extra = Column(String(16)) # 数据库连接相关
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8") def init_db():
# 创建表
Base.metadata.create_all(engine) def drop_db():
# 删除表
# Base.metadata.drop_all(engine)
pass if __name__ == '__main__':
# drop_db()
init_db()

models

from sqlalchemy import create_engine

engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
cur = engine.execute('SELECT * FROM users')
result = cur.fetchall()
print(result)

原味sql

用a*my写ORM增删改查

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, UniqueConstraint, Index, DateTime, ForeignKey
from sqlalchemy import create_engine
from sqlalchemy.orm import relationship
import datetime Base = declarative_base() class Classes(Base):
__tablename__ = 'classes'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(32), nullable=False, unique=True) class Student(Base):
__tablename__ = 'student'
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(32), nullable=False, index=True)
password = Column(String(64), nullable=False)
ctime = Column(DateTime, default=datetime.datetime.now)
class_id = Column(Integer, ForeignKey("classes.id"))
# 关联字段 backref = 反向字段
cls = relationship("Classes", backref='stus') class Hobby(Base):
__tablename__ = 'hobby'
id = Column(Integer, primary_key=True)
caption = Column(String(50), default='篮球') class Student2Hobby(Base):
__tablename__ = 'student2hobby'
id = Column(Integer, primary_key=True, autoincrement=True)
student_id = Column(Integer, ForeignKey('student.id'))
hobby_id = Column(Integer, ForeignKey('hobby.id')) __table_args__ = (
UniqueConstraint('student_id', 'hobby_id', name='uix_student_id_hobby_id'),
# Index('ix_id_name', 'name', 'extra'),
) def init_db():
# 数据库连接相关
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
# 创建表
Base.metadata.create_all(engine) def drop_db():
engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
# 删除表
Base.metadata.drop_all(engine) if __name__ == '__main__':
# drop_db()
init_db()

0.models

import models
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
XXXXXX = sessionmaker(bind=engine)
session = XXXXXX() # 单条插入
# obj = models.Classes(name='第一期')
# session.add(obj)
# session.commit() # 多条插入
# objs = [
# models.Classes(name='第二期'),
# models.Classes(name='第三期'),
# models.Classes(name='第四期'),
# models.Classes(name='第五期'),
# ]
#
# session.add_all(objs)
# session.commit() session.close()

1.增

import models
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
session = sessionmaker(bind=engine)() result = session.query(models.Classes).all()
for item in result:
print(item.id,
item.name) session.close()

2.查

import models
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
session = sessionmaker(bind=engine)() session.query(models.Classes).filter(models.Classes.id>4).delete() session.commit()
session.close()

3.删

import models
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
session = sessionmaker(bind=engine)() session.query(models.Classes).filter(models.Classes.id > 0).update({models.Classes.name: models.Classes.name + ''},
synchronize_session=False) session.commit()
session.close()

4.改

import models
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine,text engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
session = sessionmaker(bind=engine)() # 1 别名查询
result = session.query(models.Classes.id, models.Classes.name.label('xx')).all() # label 起别名
for item in result:
print(item.id, item.xx) # 2. filter接表达式/filter_by接参数
r3 = session.query(models.Classes).filter(models.Classes.name == "anne").all()
r4 = session.query(models.Classes).filter_by(name='anne').all() # 3. 子查询
result = session.query(models.Classes).from_statement(text("SELECT * FROM classes where name=:name")).params(name='ed').all()
result = session.query(models.Classes).from_statement(text("SELECT * FROM classes where name=:name")).params(name='ed')
# 子查询
ret = session.query(models.Classes).filter(models.Classes.id.in_(session.query(models.Classes.id).filter_by(name='eric'))).all()
# 关联子查询
subqry = session.query(func.count(Server.id).label("sid")).filter(Server.id == Group.id).correlate(Group).as_scalar()
result = session.query(Group.name, subqry) session.close()

5.子查询

import models
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine engine = create_engine("mysql+pymysql://root:123456@127.0.0.1:3306/day128?charset=utf8")
session = sessionmaker(bind=engine)() 1.在学生表中插入数据
obj = models.Student(username='anne', password=123, class_id=3)
obj = models.Student(username='bob', password=123, class_id=3)
obj = models.Student(username='fry', password=123, class_id=3)
session.add(obj)
session.commit() 2. 在学生表中找到anne
obj = session.query(models.Student).filter(models.Student.username=='anne').first()
print(obj.id) 3. 找到所有学生,并打印信息
方法1
objs =session.query(models.Student).all()
for obj in objs:
cls_obj = session.query(models.Classes).filter(models.Classes.id ==obj.class_id).first()
print(obj.id,obj.username,obj.class_id,cls_obj.name)
方法2
objs = session.query(models.Student.id,
models.Student.username,
models.Classes.name).join(models.Classes,isouter=True).all()
print(objs)
方法3
objs = session.query(models.Student).all()
for item in objs:
print(item.id, item.username, item.class_id, item.cls.name) # 4. 第三期所有的学生
obj = session.query(models.Classes).filter(models.Classes.id == 3).first()
student_list = obj.stus # 反向查询
for item in student_list:
print(item.id, item.username) session.close()

6.跨表

.

SQLAlchemyの增删改查的更多相关文章

  1. SQLAlchemy 增删改查 一对多 多对多

    1.创建数据表 # ORM中的数据表是什么呢? # Object Relation Mapping # Object - Table 通过 Object 去操纵数据表 # 从而引出了我们的第一步创建数 ...

  2. 13,SQLAlchemy 增删改查 一对多 多对多

    今天来聊一聊 Python 的 ORM 框架 SQLAlchemy Models 是配置和使用比较简单,因为他是Django自带的ORM框架,也正是因为是Django原生的,所以兼容性远远不如SQLA ...

  3. SQLAlchemy 增删改查 一对一 多对多

    首先要导入SQLAIchemy模块 from sqlalchemy.ect.declaative import declarative_base 创建orm基类 Base = declarative_ ...

  4. SQLAlchemy增删改查

    sqlalchemy中让MySQL支持中文字符 engine = create_engine("mysql+pymysql://root:mysql8@localhost/mysqltest ...

  5. SQLAlchemy增删改查基本操作,及SQL基本技能样码(join,group)

    练了一天,基本的东东应该有感觉了. #coding=utf-8 from datetime import datetime from sqlalchemy import (MetaData, Tabl ...

  6. 偏于SQL语句的 sqlAlchemy 增删改查操作

    ORM 江湖 曾几何时,程序员因为惧怕SQL而在开发的时候小心翼翼的写着sql,心中总是少不了恐慌,万一不小心sql语句出错,搞坏了数据库怎么办?又或者为了获取一些数据,什么内外左右连接,函数存储过程 ...

  7. SQLAlchemy表操作和增删改查

    一.SQLAlchemy介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数 ...

  8. SQLAlchemy的使用---增删改查

    #通过SQLAlchemy对数据库进行增删改查 # 想要操作数据库 先要打开数据库连接 from create_table import engine # 创建会话 - 打开数据库连接 from sq ...

  9. sqlalchemy基本的增删改查

    #encoding: utf-8 from sqlalchemy import create_engine,Column,Integer,String from sqlalchemy.ext.decl ...

随机推荐

  1. 软件磁盘阵列(RAID)

    RAID软件磁盘阵列 RAID 即廉价磁盘冗余阵列,其高可用性和可靠性适用于大规模环境中,相比正常使用,数据更需要被保护.RAID 是将多个磁盘整合的大磁盘,不仅具有存储功能,同时还有数据保护功能. ...

  2. 免费的webservice接口

    快递查询接口 http://webservice.36wu.com/ExpressService.asmx ip查询接口 http://webservice.36wu.com/ipService.as ...

  3. 微信公众号的搭建-第四天(2)-获取并缓存access_token

    1. 什么是access_token? 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等 ...

  4. jQuery:自学笔记(3)——操作DOM

    jQuery:自学笔记(3)——操作DOM 修改元素的属性 获取元素属性 设置元素属性 修改元素的内容 说明 有三种方式可以获取HTML元素的内容,分别是 ☐ text():设置或返回所选元素的文本内 ...

  5. Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,

    一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...

  6. Zuul

    一.zuul是什么 zuul 是netflix开源的一个API Gateway 服务器, 本质上是一个web servlet应用. Zuul 在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架. ...

  7. Windows彻底卸载VMWare虚拟机

    彻底卸载VMWare虚拟机 1.停止VMware相关服务 在服务中将VMware开头的所有服务停止 2.打开VMware安装向导 进入卸载页面 在卸载页面中选中VMware右键点击,进入更改后,页面为 ...

  8. 一些逼格略高的 js 片段

    // 一个接一个运行 // timeout 不能直接放在 for 里面,暂时不知道为什么 function functionOneByOne(fn, times, duration) { for(va ...

  9. INSPIRED启示录 读书笔记 - 第30章 在大公司施展拳脚

    十大秘诀 1.了解公司制定决策的方式:知道决策权在谁手里,了解他制定决策的方式,只需要说服他就行了 2.建立人脉网络:主动帮助他人,积累人脉关系 3.臭鼬工程:在工作之余做出产品原型来,产品原型具有超 ...

  10. linux下安装编译网卡驱动的方法

    安装linux操作系统后发现没有网卡驱动,表现为 system → Administration → Network下Hardware列表为空. 以下为安装编译网卡驱动的过程,本人是菜鸟,以下是我从网 ...