Python工具之SQLAlchemy

來源:互聯網
上載者:User

標籤:python

工具介紹:SQLAlchemy是Python程式設計語言下的一款ORM架構,該架構建立在資料庫API之上,使用關聯性物件映射進行資料庫操作,簡言之便是:將對象轉換成SQL,然後使用資料API執行SQL並擷取執行結果。


工作方式:通過定義類的方式來操作資料庫,一個類對應資料庫中的一個表,一個類對象對應表中的一行資料,通過執行個體化類的方式來向資料庫表中插入資料,通過對象.欄位名來擷取表中相應欄位的值。


以一個具體的例子來說明:

#!/usr/bin/env python# -*- coding:utf-8 -*-from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, DATETIMEfrom sqlalchemy.orm import sessionmakerfrom sqlalchemy import create_engine# 以字典的形式配置好Mysql資料庫的串連資訊mysql_dic = {   ‘mysql_user‘:‘test‘,   ‘mysql_pass‘:‘1234‘,   ‘mysql_ip‘:‘192.168.192.168‘,   ‘mysql_port‘:3306,   ‘mysql_db‘:‘test‘,}class Connect(object):          # 建立一個專門串連資料庫的類   Base = declarative_base()    # 建立對象的基類   def __init__(self):      mysql_str = "mysql+mysqldb://{mysql_user}:{mysql_pass}@{mysql_ip}:{mysql_port}/{mysql_db}"    # 串連資料庫的命令列      mysql_con = mysql_str.format(**mysql_dic)                 # 格式化命令      self.engine = create_engine(mysql_con, max_overflow=5)    # 初始化資料庫連接      Session = sessionmaker(bind=self.engine)                 # 建立一個會話來操作資料庫      self.session = Session()   def create_table(self):      ‘‘‘尋找Base的所有子類,按照子類的結構在資料庫中產生對應的資料表資訊‘‘‘      Connect.Base.metadata.create_all(self.engine)class Server(Connect.Base):    # 定義一個類(其實就是一張資料庫表)繼承Base基類   __tablename__ = ‘server‘    # 表名,以下均為表欄位   id = Column(Integer,autoincrement=1,primary_key=True)   date = Column(DATETIME)   user = Column(String(20))   ip = Column(String(50))   group = Column(String(50))if __name__ == ‘__main__‘:   c = Connect()    # 串連資料庫並建立程式與資料庫之間的會話   c.create_table() # 建立定義的server表          # 增加資料    s = Server(user=‘test‘,ip=‘192.168.100.1‘,group=‘monitor‘) # 執行個體化一個類對象    c.session.add(s) # 通過session會話向表中添加一行資料(一個類對象)        # c.session.add_all([    #     Server(user=‘test‘,ip=‘192.168.100.2‘,group=‘monitor‘),    #     Server(user=‘test‘,ip=‘192.168.100.3‘,group=‘monitor‘),    # ])    # 一次添加多條資料        c.session.commit()    # 提交             # 刪除資料(刪除server表中id大於2的資料)    c.session.query(Server).filter(Server.id > 2).delete()    c.session.commit()        # 修改資料(修改server表中id大於2的資料的group欄位值為JAVA)    c.session.query(Server).filter(Server.id > 2).update({‘group‘ : ‘JAVA‘})    c.session.commit()        # 查詢資料(查詢server表中所有user欄位值為test的資料)    ret = c.session.query(Server).filter_by(user=‘test‘).all()    for i in ret:        print i.ip    # 擷取滿足條件的資料中ip欄位的值             c.session.close()     # 關閉會話


部落格的部分內容和思路整理自武沛齊的部落格。

本文出自 “一行菜鳥上青天” 部落格,請務必保留此出處http://rmeos.blog.51cto.com/761575/1737775

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.