博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python自动化开发学习13-联合唯一
阅读量:7211 次
发布时间:2019-06-29

本文共 1703 字,大约阅读时间需要 5 分钟。

联合唯一

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

使用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_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, CHARfrom sqlalchemy.dialects.mysql import INTEGER, TINYINTfrom 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)  # 创建表结构,这里是通过父类来调用子类

转载于:https://blog.51cto.com/steed/2065499

你可能感兴趣的文章
MySQL的编译安装
查看>>
使用SSH连接CentOS步骤
查看>>
Elasticsearch 5 Ik+pinyin分词配置详解
查看>>
jsp实现简单的分页
查看>>
阿里云虚拟主机数据库主机怎么看
查看>>
[投稿]通过Web界面在多台服务器上批量创建文件
查看>>
Oracle 性能相关常用脚本(SQL)
查看>>
commit your changes or stash them before you can merge
查看>>
Linux Shell执行原理
查看>>
DATA GUARD架构(一)
查看>>
MapReduce1和Yarn的工作机制
查看>>
awk 以列为域提取文件内容
查看>>
NEC中标里斯本智慧城市项目 助力城市整体数字化变革
查看>>
[转] 大规模服务设计部署经验谈
查看>>
Debian手动修改ip地址
查看>>
Realm的简单使用
查看>>
zabbix使用zabbix 数据库做数据分表
查看>>
Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置
查看>>
exchange 2013 lesson 6 CAS HA installing
查看>>
Groovy中的闭包
查看>>