目录

SqlAlchemy

外键


SqlAlechemy

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

Dialect用于和数据API进行交流,根据配置文件的不同调用不同的数据库API,从而实现对数据库的操作,如:

  1. MySQL-Python
  2. mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
  3.  
  4. pymysql
  5. mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
  6.  
  7. MySQL-Connector
  8. mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
  9.  
  10. cx_Oracle
  11. oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
  12.  
  13. 更多详见:http://docs.sqlalchemy.org/en/latest/dialects/index.html

创建表(实例方法)

  1. from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
  2.  
  3. metadata = MetaData()
  4.  
  5. user = Table('user', metadata,
  6. Column('id', Integer, primary_key=True),
  7. Column('name', String(20)),
  8. )
  9.  
  10. color = Table('color', metadata,
  11. Column('id', Integer, primary_key=True),
  12. Column('name', String(20)),
  13. ) #表结构
  14. engine = create_engine("mysql+pymysql://root:1234@127.0.0.1:3306/mydb?charset=utf8", max_overflow=5)#链接数据库
  15. metadata.create_all(engine)
  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey
  5.  
  6. metadata = MetaData()
  7.  
  8. user = Table('user', metadata,
  9. Column('id', Integer, primary_key=True),
  10. Column('name', String(20)),
  11. )
  12.  
  13. color = Table('color', metadata,
  14. Column('id', Integer, primary_key=True),
  15. Column('name', String(20)),
  16. )
  17. engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s11", max_overflow=5)
  18.  
  19. conn = engine.connect()
  20.  
  21. # 创建SQL语句,INSERT INTO "user" (id, name) VALUES (:id, :name)
  22. conn.execute(user.insert(),{'id':7,'name':'seven'})
  23. conn.close()
  24.  
  25. # sql = user.insert().values(id=123, name='wu')
  26. # conn.execute(sql)
  27. # conn.close()
  28.  
  29. # sql = user.delete().where(user.c.id > 1)
  30.  
  31. # sql = user.update().values(fullname=user.c.name)
  32. # sql = user.update().where(user.c.name == 'jack').values(name='ed')
  33.  
  34. # sql = select([user, ])
  35. # sql = select([user.c.id, ])
  36. # sql = select([user.c.name, color.c.name]).where(user.c.id==color.c.id)
  37. # sql = select([user.c.name]).order_by(user.c.name)
  38. # sql = select([user]).group_by(user.c.name)
  39.  
  40. # result = conn.execute(sql)
  41. # print result.fetchall()
  42. # conn.close()

增删改查

创建表(类方法)

  1. #!/usr/bin/env python
  2. # -*- coding:utf-8 -*-
  3.  
  4. from sqlalchemy.ext.declarative import declarative_base
  5. from sqlalchemy import Column,Integer,String
  6. from sqlalchemy.orm import sessionmaker
  7. from sqlalchemy import create_engine,and_,or_
  8.  
  9. Base = declarative_base() #生成一个SqlORM的基类
  10. engine = create_engine("mysql+mysqldb://root:123@127.0.0.1:3306/s12",echo=True)
  11.  
  12. class Host(Base):
  13. __tablename__ = 'hosts'
  14. id = Column(Integer,primary_key=True,autoincrement=True)
  15. hostname = Column(String(64),unique=True,nullable=False)
  16. ip_addr = Column(String(128),unique=True,nullable=False)
  17. port = Column(Integer,default=22)
  18.  
  19. Base.metadata.create_all(engine) #创建所有表结构
  20.  
  21. if __name__ == '__main__':
  22. SessionCls = sessionmaker(bind=engine) #创建与数据库的会话
  23. session = SessionCls() #链接的实例
  24. # add(添加数据)
  25. # h2 = Host(hostname='localhost',ip_addr='127.0.0.1')
  26. # h3 = Host(hostname='ubuntu5',ip_addr='192.168.1.24',port=20000)
  27. # session.add(h2)
  28. # session.add(h3)
  29. # session.add_all([h2,h3])
  30. # update(修改数据)
  31. # obj = session.query(Host).filter(Host.hostname=='localhost').first()#查询数据
  32. # print("++>",obj)
  33. # obj.hostname = "test server"
  34. # delete(删除数据)
  35. # obj = session.query(Host).filter(Host.hostname=='test server').first()
  36. # session.delete(obj)
  37. # session.commit()
  1. # ########## 增 ##########
  2. # u = User(id=2, name='sb')
  3. # session.add(u)
  4. # session.add_all([
  5. # User(id=3, name='sb'),
  6. # User(id=4, name='sb')
  7. # ])
  8. # session.commit()
  9.  
  10. # ########## 删除 ##########
  11. # session.query(User).filter(User.id > 2).delete()
  12. # session.commit()
  13.  
  14. # ########## 修改 ##########
  15. # session.query(User).filter(User.id > 2).update({'cluster_id' : 0})
  16. # session.commit()
  17. # ########## 查 ##########
  18. # ret = session.query(User).filter_by(name='sb').first()
  19.  
  20. # ret = session.query(User).filter_by(name='sb').all()
  21. # print ret
  22.  
  23. # ret = session.query(User).filter(User.name.in_(['sb','bb'])).all()
  24. # print ret
  25.  
  26. # ret = session.query(User.name.label('name_label')).all()
  27. # print ret,type(ret)
  28.  
  29. # ret = session.query(User).order_by(User.id).all()
  30. # print ret
  31.  
  32. # ret = session.query(User).order_by(User.id)[1:3]
  33. # print ret
  34. # session.commit()

增删改查


外键——一对多

python学习之day11的更多相关文章

  1. Python学习路程day11

    SqlAlchemy ORM SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据A ...

  2. 【坚持】Selenium+Python学习记录 DAY11

    2018/06/1-2018/06/4 参考资料: [菜鸟教程](http://www.runoob.com/python3/python3-examples.html) [Python解惑:True ...

  3. Python学习笔记 - day11 - Python操作数据库

    MySQL的事务 MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关,MySQL的两种引擎如下: 1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID ...

  4. 记录我的 python 学习历程-Day11 两个被忽视的坑、补充知识点、函数名的应用、新版格式化输出、迭代器

    补充知识点 函数形参中默认参数的陷阱 针对不可变数据类型,它是没有陷阱的 def func(name, sex='男'): print(name) print(sex) func('Dylan') # ...

  5. 【目录】Python学习笔记

    目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...

  6. python学习之旅

    python学习分类 python基础    +- day01——python初始.变量.常量.注释.基础数据类型.输入.if day02——while.字符串格式化.运算符.编码初识 day03—— ...

  7. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  8. Python学习--01入门

    Python学习--01入门 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.和PHP一样,它是后端开发语言. 如果有C语言.PHP语言.JAVA语言等其中一种语言的基础,学习Py ...

  9. Python 学习小结

    python 学习小结 python 简明教程 1.python 文件 #!/etc/bin/python #coding=utf-8 2.main()函数 if __name__ == '__mai ...

随机推荐

  1. dataGridView行高自适应

    今天从网上查询相关datagridview行高自适应的信息时,好多都是告诉你直接用下面三行代码: dataGridView1.AutoSizeRowsMode = DataGridViewAutoSi ...

  2. Git学习05 --分支管理02

    1.冲突 产生冲突后,查看readme.txt   可以看到冲突内容 <<<<<<< ======= >>>>>>> ...

  3. CentOS6.4x64安装mysql5.6.23(rpm)

    #查看已安装的的mysql shell>rpm -qa|grep -i mysql #根据上条命令的结果卸载mysql shell>rpm -e -nodeps mysql* #下载mys ...

  4. org.quartz.impl.jdbcjobstore.LockException

    说明:在使用Tomcat6.0.32+Spring3.05+Quartz1.8.6+Mysql5.5.9 此项目在我本机上没有问题,当我把mysql 脚本导入到服务器上,将数据源配置修改为服务器对应的 ...

  5. QT---线程间通信(要先编译libqt-mt.so?)

    在 Qt 系统中,运行着一个GUI 主事件线程,这个主线程从窗口系统中获取事件,并将它们分发到各个组件去处理.在 QThread 类中有一种从非主事件线程中将事件提交给一个对象的方法,也就是 QThr ...

  6. 【转】Ubuntu安装ARM架构GCC工具链(ubuntu install ARM toolchain)最简单办法

    原文网址:http://www.cnblogs.com/muyun/p/3370996.html 一.安装ARM-Linux-GCC工具链 只需要一句命令: sudo apt-get install ...

  7. 【HDU 5510 Bazinga】字符串

    2015沈阳区域赛现场赛第2题 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5510 题意:给定一个由字符串组成的序列,一共n个元素,每个元素是一个不 ...

  8. ALSA音频工具amixer,aplay,arecord

    ALSA音频工具编译安装 ========================================================================1.官网http://www. ...

  9. Python 单词字母顺序不变且所有倒排

    翻出google測试project师的一道题目: 设计一个函数,不论什么语言都能够,实现下面功能: 一个句子,将句子中的单词所有倒排过来,但单词的字母顺序不变.eg.  this is a real ...

  10. wso2esb源码编译总结

    最近花了两周的空闲时间帮朋友把wso2esb的4.0.3.4.6.0.4.7.0三个版本从源码编译出来了.以下是大概的一些体会. wso2esb是基于carbon的.carbon是个基于eclipse ...