联合唯一

联合唯一,就是一个表中的多个字段的组合需要唯一。

使用mysql语句创建

比如创建一张hosts表,记录登录的ip地址或者hostname(表中对应字段host)和 端口号(表中对应字段port),要求host 和 port 的组合必须唯一:

> CREATE TABLE hosts1 (-> id INT UNSIGNED AUTO_INCREMENT,-> host CHAR(20) NOT NULL,-> port TINYINT UNSIGNED DEFAULT 22,-> description VARCHAR(20),-> PRIMARY KEY (id)-> );

如果表已经存在,那么需要修改表结构,增加唯一约束:

> ALTER TABLE hosts1-> ADD UNIQUE KEY host_port(host, port)

或者直接一步到位,创建表的时候指定唯一约束:

> CREATE TABLE hosts2 (-> id INT UNSIGNED AUTO_INCREMENT,-> host CHAR(20) NOT NULL,-> port TINYINT UNSIGNED DEFAULT 22,-> description VARCHAR(20),-> PRIMARY KEY (id),-> UNIQUE KEY host_port(host, port)-> );

使用SQLAlchemy操作

联合唯一需要导入额外的模块 UniqueConstraint ,然后用一个变量 __table_args__ 存放你要声明的联合唯一。另外如果要声明索引,也是在这个变量里。变量的类型是元祖。

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, CHAR
from sqlalchemy.dialects.mysql import INTEGER, TINYINT
from sqlalchemy import UniqueConstraint  # 联合唯一,需要导入engine = create_engine("mysql+pymysql://admin:admin123@192.168.246.12/week12",encoding='utf-8', echo=True)  # 这里设置了echo参数,显示中间过程和SQL语句Base = declarative_base()  # 生成orm基类
class Hosts3(Base):__tablename__ = 'hosts3'  # 表名id = Column(INTEGER(unsigned=True), primary_key=True)host = Column(CHAR(20))port = Column(TINYINT(unsigned=True), default=22)description = Column(String(20))__table_args__ = (UniqueConstraint('host', 'port', name='host_port'),)  # 这个变量名不能变,后面是个元祖# 另外如果要做索引,也是写上面的元祖里。索引需要导入Index,然后加上这个: Index('host', 'port')

Base.metadata.create_all(engine) # 创建表结构,这里是通过父类来调用子类








本文转自骑士救兵51CTO博客,原文链接:http://blog.51cto.com/steed/2065499,如需转载请自行联系原作者

Python自动化开发学习13-联合唯一相关推荐

  1. Python自动化开发学习13-堡垒机开发

    堡垒机介绍 很多人觉得,堡垒机就是跳板机,这是不全面的.跳板功能只是堡垒机所具备的功能的其中一项.堡垒机还有以下两个至关重要的功能: 权限管理 : 用户使用堡垒机账号登录堡垒机系统.不需要知道别的主机 ...

  2. Python自动化开发学习的第九周----线程、进程、协程

    一.计算机操作系统的简介 手工操作(无操作系统) 1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式. 程序员将对应于程序和数据的已穿孔的纸带(或卡片)装 ...

  3. Python自动化开发学习6

    引子 假设我们要在我们的程序里表示狗,狗有如下属性:名字.品种.颜色.那么可以先定义一个模板,然后调用这个模板生成各种狗. def dog(name,d_type,color):data = {'na ...

  4. Python自动化开发学习22-Django上

    session 上节已经讲了使用Cookie来做用户认证,但是 Cookie的问题 缺点:敏感信息不适合放在cookie里,敏感信息只能放在服务器端 优势:把部分用户数据分散的存放在每个客户端,减轻服 ...

  5. Python自动化开发学习的第十一周----WEB框架--Django基础

    WEB框架的本质 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. #!/usr/bin/env python #coding:utf-8imp ...

  6. python自动化办公都能做什么菜-Python自动化开发学习之三级菜单制作

    本文实例为大家分享了Python三级菜单展示的具体代码,供大家参考,具体内容如下 作业需求: (1)运行程序输出第一级菜单 (2)选择一级菜单某项,输出二级菜单,同理输出三级菜单 (3)让用户选择是否 ...

  7. Python自动化开发学习的第十一周----WEB基础(jquery)

    jQuery jQuery 库 - 特性 jQuery 是一个 JavaScript 函数库. jQuery 极大地简化了 JavaScript 编程. jQuery 库包含以下特性: HTML 元素 ...

  8. Python自动化开发学习2

    列表和元祖 列表取值和切片的演示: strings = ['a','b','c','d','e','f','g'] print(strings[0]) # 从0开始计数,所以第一个元素是0 print ...

  9. Python自动化开发学习15-css补充内容

    上节回顾 上一节学习的内容,有一下几点,可以注意一下.或者说推荐这么做. class可以设置多个值-css样式重用 可以给一个标签设置多个class值,这样我们可以为每个class应用一种样式.标签有 ...

最新文章

  1. Thinkphp 零散知识点(caa/js路径,引入第三方类,ajax返回,session/cookie)
  2. DCMTK:测试DcmItem的newDicomElement()辅助方法
  3. react(87)--批量删除进行置空操作
  4. XML文件的写入和读取(解析)基于DOM4J工具
  5. MySQL 服务无法启动--服务没有报告任何错误 ---Failed to find valid data directory.
  6. ASP.NET字符显示不正确的解决方法
  7. python中合并字符串的库函数是_《Python Cookbook(第2版)中文版》——1.6 合并字符串...
  8. 学习笔记1-【计算机组成原理】-【计算机科学速成课】[40集全/精校] - Crash Course Computer Science
  9. MySQL SUM() 带条件的求和方法与多条件的求和方法
  10. android 微博 4.1sdk,android使用新浪微博最新SDK4.1进行第三方授权登录
  11. 数据中心交换机的五大法宝
  12. VVC帧间预测(四)仿射运动补偿预测
  13. 水星WM150U无线网卡开机掉驱动的解决方法
  14. css实现毛玻璃效果
  15. 项目awesome-semantic-segmentation-pytorch以及FCN、Unet、deeplabv1、deeplabv2、deeplabv3、deeplabv3+的网络
  16. 【JavaSE】abstract 抽象类 快到碗里来 (◕ᴗ◕✿)
  17. 全干式光缆与普通光缆的区别
  18. 计算机控制实验室装置,新型自控原理/计算机控制多功能实验装置
  19. NoteExpress文献导入,信息显示不全的问题
  20. 因为我梦见了热情的梦

热门文章

  1. 安装教程rtx2080ti_点云深度学习环境配置指南(一)Ubuntu16.04+RTX2080ti
  2. c语言字符型计算器,求用c语言编程四则混合运算计算器?
  3. 收到一个机器人txt微盘_经阁-第一章 吞了个机器人-爱阅小说网
  4. label里面的文字换行_批量识别图中文字自动命名,让你1秒找到骚图!太强大了!...
  5. 计算机教学难点重点,浅述如何解决小学信息技术教学中的重点、难点
  6. 极光推送 android 最新,Android——快速集成极光推送-Go语言中文社区
  7. android h5 有广告,那些H5在Android上显示的丧心病狂的坑
  8. 《软件项目管理(第二版)》第 7 章——项目风险管理 重点部分总结
  9. ST-LINK USB communication error解决方法
  10. php创建表设置编码,教您在Zend Framework里如何设置数据库编码以及怎样给数据表设定前缀!...