Python 學習筆記 - sqlAlchemy(初稿)

來源:互聯網
上載者:User

標籤:python   sqlalchemy   

上一篇簡單的介紹了MySQL的原生命令,以及如何使用pymysql模組在Python裡面使用。這一節簡單的介紹一下sqlAlchemy和他的ORM架構。ORM架構允許開發人員通過類的方法來操作資料庫,而無需在使用原生的SQL語句。


from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Indexfrom sqlalchemy.orm import sessionmaker, relationshipfrom sqlalchemy import create_engineengine = create_engine("mysql+pymysql://yli:[email protected]:3306/mydb", max_overflow=5)Base = declarative_base()# 建立單表class Users(Base):    __tablename__ = ‘users‘    id = Column(Integer, primary_key=True)    name = Column(String(32))    extra = Column(String(16))    __table_args__ = (    UniqueConstraint(‘id‘, ‘name‘, name=‘uix_id_name‘),        Index(‘ix_id_name‘, ‘name‘, ‘extra‘),    )# 一對多class Favor(Base):    __tablename__ = ‘favor‘    nid = Column(Integer, primary_key=True)    caption = Column(String(50), default=‘red‘, unique=True)class Person(Base):    __tablename__ = ‘person‘    nid = Column(Integer, primary_key=True)    name = Column(String(32), index=True, nullable=True)    favor_id = Column(Integer, ForeignKey("favor.nid"))# 多對多class ServerToGroup(Base):    __tablename__ = ‘servertogroup‘    nid = Column(Integer, primary_key=True, autoincrement=True)    server_id = Column(Integer, ForeignKey(‘server.id‘))    group_id = Column(Integer, ForeignKey(‘group.id‘))class Group(Base):    __tablename__ = ‘group‘    id = Column(Integer, primary_key=True)    name = Column(String(64), unique=True, nullable=False)class Server(Base):    __tablename__ = ‘server‘    id = Column(Integer, primary_key=True, autoincrement=True)    hostname = Column(String(64), unique=True, nullable=False)    port = Column(Integer, default=22)#建立表Base.metadata.create_all(engine) #刪除表# Base.metadata.drop_all(engine)


上述命令建立的表

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/8A/0E/wKiom1glFYPjCL_BAABCvMJmtQo427.png" title="你.PNG" alt="wKiom1glFYPjCL_BAABCvMJmtQo427.png" />


修改一下,我們可以添加資料和查詢資料

from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Indexfrom sqlalchemy.orm import sessionmaker, relationshipfrom sqlalchemy import create_engineengine = create_engine("mysql+pymysql://yli:[email protected]:3306/mydb", max_overflow=5)Base = declarative_base()# 建立單表class Users(Base):    __tablename__ = ‘users‘    id = Column(Integer, primary_key=True)    name = Column(String(32))    extra = Column(String(16))    __table_args__ = (    UniqueConstraint(‘id‘, ‘name‘, name=‘uix_id_name‘),        Index(‘ix_id_name‘, ‘name‘, ‘extra‘),    )# 一對多class Favor(Base):    __tablename__ = ‘favor‘    nid = Column(Integer, primary_key=True)    caption = Column(String(50), default=‘red‘, unique=True)class Person(Base):    __tablename__ = ‘person‘    nid = Column(Integer, primary_key=True)    name = Column(String(32), index=True, nullable=True)    favor_id = Column(Integer, ForeignKey("favor.nid"))# 多對多class ServerToGroup(Base):    __tablename__ = ‘servertogroup‘    nid = Column(Integer, primary_key=True, autoincrement=True)    server_id = Column(Integer, ForeignKey(‘server.id‘))    group_id = Column(Integer, ForeignKey(‘group.id‘))class Group(Base):    __tablename__ = ‘group‘    id = Column(Integer, primary_key=True)    name = Column(String(64), unique=True, nullable=False)class Server(Base):    __tablename__ = ‘server‘    id = Column(Integer, primary_key=True, autoincrement=True)    hostname = Column(String(64), unique=True, nullable=False)    port = Column(Integer, default=22)Base.metadata.create_all(engine)# Base.metadata.drop_all(engine)Session = sessionmaker(bind=engine)session = Session()obj = Users(name=‘alex111‘,extra=‘sss‘)session.add(obj)session.commit()q = session.query(Users)print(q)ret = session.query(Users).all()print(ret)print(ret[0].name)print(ret[0].id)


結果如下所示:

"C:\Program Files\Python3\python.exe" "C:/Users/yli/Documents/Tencent Files/38144205/FileRecv/FileRecv/day12/s17.py"SELECT users.id AS users_id, users.name AS users_name, users.extra AS users_extra FROM users[<__main__.Users object at 0x00000259D73AEF28>]alex1111


本文出自 “麻婆豆腐” 部落格,請務必保留此出處http://beanxyz.blog.51cto.com/5570417/1871672

Python 學習筆記 - sqlAlchemy(初稿)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.