Python自动化开发学习13-联合唯一

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

联合唯一

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

使用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)
    -> );
AI 代码解读

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

> ALTER TABLE hosts1
    -> ADD UNIQUE KEY host_port(host, port)
AI 代码解读

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

> 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)
    -> );
AI 代码解读

使用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')


AI 代码解读

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








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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
打赏
0
0
0
0
101
分享
相关文章
|
2月前
|
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【01】整体试验思路,如何在有UID的情况下获得用户手机号信息,python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
253 82
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
【02】整体试验思路,在这之前我们发现sec_uid,sec_uid是什么和uid的关系又是什么?相互如何转换?python开发之理论研究试验,如何通过抖音视频下方的用户的UID获得抖音用户的手机号-本系列文章仅供学习研究-禁止用于任何商业用途-仅供学习交流-优雅草卓伊凡
97 6
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
Python自动化Office文档处理全攻略
本文介绍如何使用Python自动化处理Word、Excel和PDF文档,提升办公效率。通过安装`python-docx`、`openpyxl`、`pandas`、`PyPDF2`和`pdfplumber`等库,可以轻松实现读取、修改、创建和批量处理这些文档。具体包括:自动化处理Word文档(如读取、修改内容、调整样式),Excel文档(如读取、清洗、汇总数据),以及PDF文档(如提取文本和表格数据)。结合代码示例和实战案例,帮助你掌握高效办公技巧,减少手动操作的错误率。
85 1
Python时间序列分析:使用TSFresh进行自动化特征提取
TSFresh 是一个专门用于时间序列数据特征自动提取的框架,支持分类、回归和异常检测等机器学习任务。它通过自动化特征工程流程,处理数百个统计特征(如均值、方差、自相关性等),并通过假设检验筛选显著特征,提升分析效率。TSFresh 支持单变量和多变量时间序列数据,能够与 scikit-learn 等库无缝集成,适用于大规模时间序列数据的特征提取与模型训练。其工作流程包括数据格式转换、特征提取和选择,并提供可视化工具帮助理解特征分布及与目标变量的关系。
146 16
Python时间序列分析:使用TSFresh进行自动化特征提取
|
2月前
|
python pandas学习(一)
该代码段展示了四个主要操作:1) 删除指定列名,如商品id;2) 使用正则表达式模糊匹配并删除列,例如匹配订单商品名称1的列;3) 将毫秒级时间戳转换为带有时区调整的日期时间格式,并增加8小时以适应本地时区;4) 将列表转换为DataFrame后保存为Excel文件,文件路径和名称根据变量拼接而成。
33 3
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
120 3
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
机器学习+自动化运维:让服务器自己修Bug,运维变轻松!
77 14

热门文章

最新文章