国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python 數據庫操作 SQLAlchemy的示例代碼

2020-02-16 01:13:23
字體:
來源:轉載
供稿:網友

程序在運行過程中所有的的數據都存儲在內存 (RAM) 中,「RAM 是易失性存儲器,系統掉電后 RAM 中的所有數據將全部丟失」。在大多數情況下我們希望程序運行中產生的數據能夠長久的保存,此時我們就需要將數據保存到磁盤上,無論是保存到本地磁盤,還是通過網絡保存到服務器上,最終都會將數據寫入磁盤文件。將數據保存在磁盤中我們需要面對一個數據格式的問題,此時就需要引入數據庫操作。

數據庫是專門用于數據的集中存儲和查詢的軟件,它便于程序保存和讀取數據,且能夠通過特定的條件查詢指定的數據。

Python 的標準數據庫接口為 Python DB-API,它為編程人員提供了完善的數據庫應用標稱接口。但是使用 Python DB-API 需要開發人員自行去拼接 SQL,并把 SQL 做成模板。此時全靠編程人員來保證系統的安全性,完全有人來保證系統的安全性,不可避免的會出現錯誤,為了減少人為原因產生的錯誤 ORM 框架應運而生。

ORM 即 Object-Relational Mapping,把關系數據庫的表結構映射到對象上面。負責這個轉換過程的就是 ORM 框架

Python 中的 ORM 框架主要有 SQLObject、Storm、Django's ORM、peewee、SQLALchemy。每種 ORM 框架都有各自的特點和相應的應用范圍,本文主要介紹 SALALchemy,若你對其他框架感興趣請自行搜索相關內容。

SQLAlchemy 簡介

SQLAlchemy 是一個功能強大的開源 Python ORM 工具包。它提供了 “一個知名企業級的持久化模式的,專為高效率和高性能的數據庫訪問設計的,改編成一個簡單的 Python 域語言的完整套件”。它采用了數據映射模式(像 Java 中的 Hibernate)而不是 Active Record 模式(像Ruby on Rails 的 ORM)。

SQLAlchemy官網。

SQLAlchemy 的優缺點:

優點:

企業級 API,使得代碼有健壯性和適應性。 靈活的設計,使得能輕松完成復雜的數據查詢。

缺點:

工作單元概念不常見。 重量級 API,導致長學習曲線。

SQLAlchemy 應用

以下是一段使用 SQLAlchemy 操作 SQLite 數據庫的代碼

# -*- coding:utf-8 -*-from sqlalchemy import (  create_engine,  Column,  Integer,  String,)from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy.orm import sessionmakerengine = create_engine('sqlite:///./sqlalchemy.sqlite', echo=True)Base = declarative_base()class User(Base):  __tablename__ = 'users'  id = Column(Integer, primary_key=True, autoincrement=True)  name = Column(String)  fullname = Column(String)  nickname = Column(String)  def __repr__(self):    return "<User(name='%s', fullname='%s', nickname='%s')>" % (self.name, self.fullname, self.nickname)db_session = sessionmaker(bind=engine)session = db_session()Base.metadata.create_all(engine)user1 = User(name='ed', fullname='Ed Jones', nickname='edsnickname')user2 = User(name='wendy', fullname='Wendy Williams', nickname='windy')user3 = User(name='mary', fullname='Mary Contrary', nickname='mary')session.add(user1)session.add(user2)session.add(user3)session.commit()user = session.query(User).filter(User.id<2).all()print(user)user = session.query(User).filter(User.id<=5).all()print(user)user1.name = 'admin'session.merge(user1)user4 = User(name='fred', fullname='Fred Flintstone', nickname='freddy')session.merge(user4)session.query(User).filter(User.id==2).update({'name':'test'})user = session.query(User).filter(User.id<=5).all()print(user)            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 习水县| 平潭县| 彭泽县| 新邵县| 德清县| 尉氏县| 南丰县| 凤凰县| 宜城市| 巴彦县| 科技| 儋州市| 墨江| 梁平县| 保德县| 正阳县| 泽州县| 阳春市| 扎鲁特旗| 仪陇县| 巴林右旗| 丹阳市| 永年县| 边坝县| 灌阳县| 宁都县| 定日县| 沅江市| 固镇县| 新津县| 平陆县| 岳阳市| 鄂尔多斯市| 喜德县| 曲靖市| 自治县| 翁源县| 馆陶县| 南川市| 义马市| 延吉市|