Python自动化开发学习13-联合唯一
2018-01-26 15:50
555 查看
联合唯一
联合唯一,就是一个表中的多个字段的组合需要唯一。使用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) # 创建表结构,这里是通过父类来调用子类
相关文章推荐
- Python自动化开发学习13-堡垒机开发 推荐
- Python自动化开发学习6
- Python自动化开发学习12-MariaDB
- Python自动化开发学习11-RabbitMQ
- Python自动化开发学习15-JavaScript和DOM
- Python自动化开发学习7
- Python自动化开发学习4-装饰器
- Python自动化开发学习24-Django下(其他)
- Python自动化开发学习-爬虫1
- Python自动化开发学习14-html和css
- 初识TPOT:一个基于Python的自动化机器学习开发工具
- Python自动化开发学习之三级菜单制作
- Python自动化开发学习25-Django
- Python自动化开发学习16-前端内容综合进阶
- Python自动化开发学习1-2
- Python自动化开发学习10
- Python自动化开发学习-Django Admin
- Python自动化开发学习4-2
- Python自动化开发学习23-Django下(Form)
- Python自动化开发学习4-3