整理了下以前學習SQLAlchemy的一些筆記,準備弄成一個系列來寫,順便鞏固下自己的知識,好了,廢話不多說了,讓我們開始學習SQLAlchemy吧
在學SQLAlchemy之前,我們需要了解一個叫ORM的東西,
ORM,全稱(Object Relational Mapping),中文稱之為對象關系映射,通過ORM我們可以通過類的方式去操作數據庫,而不用寫原生的SQL語句,通過把表映射成類,把行作為示例,把字段作為屬性,ORM在執行對象操作的時候最終還是會把對應的操作轉換為數據庫原生語句,讓我們接下來說下使用ORM有哪些優點:
易用性:使用ORM做數據庫的開發可以有效的減少重復SQL語句的概率,寫出來的模型也更加直觀,清晰
性能損耗小:ORM轉換成底層數據操作指令時確實有一些開銷,但是從實際的情況來看,這種性能損耗很少(不足5%),只要不是對性能有嚴格的要求的,綜合開發效率、代碼的閱讀性,帶來的好處遠遠大于性能損耗,而且隨著項目越來越大的時候作用更加的明顯
設計靈活:可以輕松的寫出復雜的查詢
可移植性:SQLAlchemy封裝了底層的數據庫實現,支持多個關系數據庫引擎,包括流行的MySQL、postgreSQL和SQLite,可以非常輕松的切換數據庫
好了,ORM就先介紹到這里,讓我們回到今天的主題
SQLAlchemy:SQLAlchemy是一個數據庫的ORM框架,可以通過pip install SQLAlchemy來安裝我們的SQLAlchemy
接下來上代碼
# 1.首先在本地創建一個數據庫 # 2.準備數據庫的連接數據 # 因為數據庫的不同,所以每種數據庫的都有自己的連接方式,我用的是mysql的連接方式 DB_USERNAME = "" # 數據庫用戶名 DB_PASSWORD = "" # 數據庫密碼 DB_HOST="" # 主機名 DB_PORT = "" # 端口號 mysql 默認的是3306 DB_NAME = "" # 數據庫的名字 DB_URI = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % (DB_USERNAME,DB_PASSWORD,DB_HOST,DB_PORT,DB_NAME) # engine 創建引擎 engine = create_engine(DB_URI)
引擎創建好了以后我們要測試下是否成功連接到數據庫,可以通過
with engine.connect() as con: rs = con.execute("select 1") print rs.fetchone()
如果打印出了(1L,),那就代表你已經成功的連接上了數據庫,接下來我們將使用ORM創建類的方法來創建,廢話不多說,上代碼
# 1.必須先繼承之sqlalchemy的某個基類 Base = declarative_base(engine) # 創建一張user表,定義好一些屬性與user表中的字段想映射 class UserModel(Base): # 提前設置好映射的表名 __tablename__ = "users" id = Column(Integer,primary_key=True,autoincrement=True) username = Column(String(100),nullable=False) password = Column(String(100),nullable=False) def __repr__(self): # 這個純屬是為了打印的時候更加好看 return "" % (self.id,self.username,self.password) # 將創建好的User表提交到數據表中 Base.metadata.create_all()
這樣就在我們是數據庫中創建了一張users表了
然后我給大家介紹下SQLAlchemy常用的數據類型
Integer:整形,映射到數據庫中的int類型
String:字符類型,映射到數據庫中的varchar類型,使用時,需要提供一個字符長度
Boolean:布爾類型,映射到數據庫中的bool類型,在使用的時候,傳遞True/False進去
Text:文本類型,映射到數據庫中的text類型
Date:日期類型,沒有時間。映射到數據庫中是date類型,在使用的時候,傳遞datetime.date()進去
DateTime:日期時間類型。映射到數據庫中的是datetime類型,在使用的時候,傳遞datetime.datetime()進去
Float:浮點類型
Column類常用的參數
primary_key:主鍵,True和False
autoincrement:是否自動增長,True和False
unique:是否唯一
nullable:是否可空,默認是True
default:默認值
onupdate:在更新的時候,一般用在時間上面
好了,今天就先介紹到這里吧,下次帶給大家的就是ORM
的增刪查改
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44374.html
第一步,完成項目骨架。 https://github.com/xbynet/flask-skeleton backend all the requirements show the bellow: Flask==0.11.1 Werkzeug==0.11.11 Jinja2==2.8 SQLAlchemy==1.1.2 celery==3.1.23 Flask-sqlalchemy==2.1 f...
摘要:另外,項目在單元測試中使用的是的內存數據庫,這樣開發者運行單元測試的時候不需要安裝和配置復雜的數據庫,只要安裝好就可以了。而且,數據庫是保存在內存中的,會提高單元測試的速度。是實現層的基礎。項目一般會使用數據庫來運行單元測試。 OpenStack中的關系型數據庫應用 OpenStack中的數據庫應用主要是關系型數據庫,主要使用的是MySQL數據庫。當然也有一些NoSQL的應用,比如Ce...
摘要:程序中最常用的莫過于關系型數據庫了,也稱數據庫。對象是類的實例,表示程序使用的數據庫。本文由發表于個人博客,采用自由轉載保持署名非商用禁止演繹協議發布。非商業轉載請注明作者及出處。本文標題為插件系列本文鏈接為更多閱讀 簡介 Web 開發中,一個重要的組成部分便是數據庫了。Web 程序中最常用的莫過于關系型數據庫了,也稱 SQL 數據庫。另外,文檔數據庫(如 mongodb)、鍵值對數據...
摘要:前言我想分享快速打造博客的詳細教程,可是發現網易課堂已經有相應的免費課堂了,所以就不打算一點一滴的在這里做筆記,分享這些東西了。所以我主要集中在使用上的講解。可我還是錄了一套視頻效果不是很好,稍后想分享給大家。 前言: 我想分享flask+flask-admin快速打造博客的詳細教程,可是發現網易課堂已經有相應的免費課堂了,所以就不打算一點一滴的在這里做筆記,分享這些東西了。所以我主要...
閱讀 3723·2023-04-25 22:43
閱讀 3723·2021-09-06 15:15
閱讀 1340·2019-08-30 15:54
閱讀 3572·2019-08-30 14:20
閱讀 2892·2019-08-29 17:16
閱讀 3123·2019-08-29 15:28
閱讀 3403·2019-08-29 11:08
閱讀 1078·2019-08-28 18:05