Python自動化開發學習12-聯合唯一

來源:互聯網
上載者:User

標籤:使用   一個   ext   creat   from   echo   匯入   通過   meta   

聯合唯一

聯合唯一,就是一個表中的多個欄位的組合需要唯一。

使用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:[email protected]/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自動化開發學習12-聯合唯一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.