python的sqlalchemy架構

來源:互聯網
上載者:User

標籤:資料庫表   設定檔   python   classic   sqlalchemy   

先看一下sqlalchemy架構中的映射,sqlalchemy一共有三種映射方式:傳統映射(classic)、
現代化映射(modern)、自訂映射。
在這裡,只為大家講一下classic映射和modern映射。


classic映射:
顧名思義,就是類似於hibernate那樣,要寫好多設定檔,這裡放一個小例子:

#coding=utf-8from sqlalchemy import Table, MetaData, Column, Integer, String, DateTime  from datetime import datetime  from sqlalchemy.engine import create_engine  ‘‘‘‘‘與資料庫建立連結‘‘‘  engine = create_engine("mysql://username:[email protected]/databasename",isolation_level="READ UNCOMMITTED")   ‘‘‘‘‘資料庫表與對象之間的映射關係,類於hibernate中的xml設定檔‘‘‘  metadata = MetaData()  people = Table( #people                  ‘people‘, metadata,                  Column(‘id‘, Integer, primary_key=True),                  Column(‘name‘, String(16), unique=True, nullable=False),                  Column(‘gender‘, String(255), unique=True, nullable=True),                  Column(‘created‘, DateTime, default=datetime.now)                  )  student = Table( #student                  ‘student‘, metadata,                  Column(‘id‘, Integer, primary_key=True),                  Column(‘name‘, String(16), unique=True, nullable=False),                  Column(‘gender‘, String(255), unique=True, nullable=True),                  Column(‘created‘, DateTime, default=datetime.now)                  )  teacher = Table( #teacher                  ‘teacher‘, metadata,                  Column(‘id‘, Integer, primary_key=True),                  Column(‘name‘, String(16), unique=True, nullable=False),                  Column(‘gender‘, String(255), unique=True, nullable=True),                  Column(‘created‘, DateTime, default=datetime.now)                  )  ‘‘‘‘‘建立資料庫的類‘‘‘  class People(object):pass  class Student(object):pass  class Teacher(object):pass  ‘‘‘‘‘傳統映射方式‘‘‘  mapper(People,people)  mapper(Student,student)  mapper(Teacher,teacher)  ‘‘‘‘‘建立表‘‘‘  metadata.create_all(engine)

此時,如果我們再寫一個*.py檔案
代碼如下:

from dbproject.dbsetting import People,Teacher,enginefrom sqlalchemy.orm import sessionmakerpeople = People()teahcer = Teacher()people.name=‘renlei‘people.id=1teahcer.name=‘laoshi‘teahcer.id=1Session = sessionmaker()Session.configure(bind=engine)session = Session()session.add(people)session.add(teahcer)session.flush()session.commit()

編譯運行這個python檔案,就會探索資料庫中的資訊發生了相應變化。


modern映射:

如下,先寫一個modern.py檔案,代碼:

#coding=utf-8from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, Stringfrom sqlalchemy.engine import create_engine‘‘‘與資料庫建立連結‘‘‘engine = create_engine("mysql://username:[email protected]/databasename",isolation_level="READ UNCOMMITTED") ‘‘‘資料庫表結構‘‘‘Base = declarative_base()class People():#定義一個基類當然也可以不定義,這裡只是給個例子    id = Column(Integer, primary_key=True)    name = Column(String(16))    gender = Column(String(16))    age = Column(String(16))class User(Base,People):    __tablename__ = ‘users‘    fullname = Column(String(16))    password = Column(String(16))class AdvancedUser(Base,People):    __tablename__ = ‘advanceduser‘        fullname = Column(String(16))    password = Column(String(16))    email = Column(String(16))    class Teacher(Base,People):    __tablename__ = ‘teacher‘        phone = Column(String(16))#建立所有的表Base.metadata.create_all(engine)

接入來再寫一個control.py檔案,代碼:

#coding=utf-8from sqlalchemy.orm.session import sessionmakerfrom modern import engine,User,AdvancedUser,Teacheruser = User()user.name = ‘username‘user.gender = ‘male‘au = AdvancedUser()au.name = ‘auname‘au.gender = ‘female‘teacher = Teacher()teacher.name = ‘wangdi‘teacher.gender = ‘female‘teacher.phone = ‘15264397652‘Session = sessionmaker()Session.configure(bind=engine)session = Session()session.add(user)session.add(au)session.add(teacher)session.flush()session.commit()

編譯執行代碼,會探索資料庫內資訊有變化,怎麼樣,與classic映射相比,這種寫法是不是更方便啊。
這樣,我們就可以省去大量的sql語句,直接使用python代碼來完成。

本文出自 “逸塵” 部落格,謝絕轉載!

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.