国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

SQLAlchemy系列之一

Caizhenhao / 2228人閱讀

整理了下以前學(xué)習(xí)SQLAlchemy的一些筆記,準(zhǔn)備弄成一個(gè)系列來(lái)寫(xiě),順便鞏固下自己的知識(shí),好了,廢話(huà)不多說(shuō)了,讓我們開(kāi)始學(xué)習(xí)SQLAlchemy吧

在學(xué)SQLAlchemy之前,我們需要了解一個(gè)叫ORM的東西,

ORM,全稱(chēng)(Object Relational Mapping),中文稱(chēng)之為對(duì)象關(guān)系映射,通過(guò)ORM我們可以通過(guò)類(lèi)的方式去操作數(shù)據(jù)庫(kù),而不用寫(xiě)原生的SQL語(yǔ)句,通過(guò)把表映射成類(lèi),把行作為示例,把字段作為屬性,ORM在執(zhí)行對(duì)象操作的時(shí)候最終還是會(huì)把對(duì)應(yīng)的操作轉(zhuǎn)換為數(shù)據(jù)庫(kù)原生語(yǔ)句,讓我們接下來(lái)說(shuō)下使用ORM有哪些優(yōu)點(diǎn):

易用性:使用ORM做數(shù)據(jù)庫(kù)的開(kāi)發(fā)可以有效的減少重復(fù)SQL語(yǔ)句的概率,寫(xiě)出來(lái)的模型也更加直觀(guān),清晰

性能損耗小:ORM轉(zhuǎn)換成底層數(shù)據(jù)操作指令時(shí)確實(shí)有一些開(kāi)銷(xiāo),但是從實(shí)際的情況來(lái)看,這種性能損耗很少(不足5%),只要不是對(duì)性能有嚴(yán)格的要求的,綜合開(kāi)發(fā)效率、代碼的閱讀性,帶來(lái)的好處遠(yuǎn)遠(yuǎn)大于性能損耗,而且隨著項(xiàng)目越來(lái)越大的時(shí)候作用更加的明顯

設(shè)計(jì)靈活:可以輕松的寫(xiě)出復(fù)雜的查詢(xún)

可移植性:SQLAlchemy封裝了底層的數(shù)據(jù)庫(kù)實(shí)現(xiàn),支持多個(gè)關(guān)系數(shù)據(jù)庫(kù)引擎,包括流行的MySQL、postgreSQL和SQLite,可以非常輕松的切換數(shù)據(jù)庫(kù)

好了,ORM就先介紹到這里,讓我們回到今天的主題

SQLAlchemy:SQLAlchemy是一個(gè)數(shù)據(jù)庫(kù)的ORM框架,可以通過(guò)pip install SQLAlchemy來(lái)安裝我們的SQLAlchemy

接下來(lái)上代碼

# 1.首先在本地創(chuàng)建一個(gè)數(shù)據(jù)庫(kù) 
# 2.準(zhǔn)備數(shù)據(jù)庫(kù)的連接數(shù)據(jù)
# 因?yàn)閿?shù)據(jù)庫(kù)的不同,所以每種數(shù)據(jù)庫(kù)的都有自己的連接方式,我用的是mysql的連接方式
DB_USERNAME = ""  # 數(shù)據(jù)庫(kù)用戶(hù)名
DB_PASSWORD = ""  # 數(shù)據(jù)庫(kù)密碼
DB_HOST=""        # 主機(jī)名
DB_PORT = ""      # 端口號(hào) mysql 默認(rèn)的是3306
DB_NAME = ""    # 數(shù)據(jù)庫(kù)的名字

DB_URI = "mysql+mysqldb://%s:%s@%s:%s/%s?charset=utf8" % (DB_USERNAME,DB_PASSWORD,DB_HOST,DB_PORT,DB_NAME)

# engine 創(chuàng)建引擎
engine = create_engine(DB_URI)

引擎創(chuàng)建好了以后我們要測(cè)試下是否成功連接到數(shù)據(jù)庫(kù),可以通過(guò)

with engine.connect() as con:
    rs = con.execute("select 1")
    print rs.fetchone()

如果打印出了(1L,),那就代表你已經(jīng)成功的連接上了數(shù)據(jù)庫(kù),接下來(lái)我們將使用ORM創(chuàng)建類(lèi)的方法來(lái)創(chuàng)建,廢話(huà)不多說(shuō),上代碼

# 1.必須先繼承之sqlalchemy的某個(gè)基類(lèi)
Base = declarative_base(engine)


# 創(chuàng)建一張user表,定義好一些屬性與user表中的字段想映射
class UserModel(Base):
    # 提前設(shè)置好映射的表名
    __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):
        # 這個(gè)純屬是為了打印的時(shí)候更加好看
        return "" % (self.id,self.username,self.password)

# 將創(chuàng)建好的User表提交到數(shù)據(jù)表中
Base.metadata.create_all()

這樣就在我們是數(shù)據(jù)庫(kù)中創(chuàng)建了一張users表了

然后我給大家介紹下SQLAlchemy常用的數(shù)據(jù)類(lèi)型

Integer:整形,映射到數(shù)據(jù)庫(kù)中的int類(lèi)型

String:字符類(lèi)型,映射到數(shù)據(jù)庫(kù)中的varchar類(lèi)型,使用時(shí),需要提供一個(gè)字符長(zhǎng)度

Boolean:布爾類(lèi)型,映射到數(shù)據(jù)庫(kù)中的bool類(lèi)型,在使用的時(shí)候,傳遞True/False進(jìn)去

Text:文本類(lèi)型,映射到數(shù)據(jù)庫(kù)中的text類(lèi)型

Date:日期類(lèi)型,沒(méi)有時(shí)間。映射到數(shù)據(jù)庫(kù)中是date類(lèi)型,在使用的時(shí)候,傳遞datetime.date()進(jìn)去

DateTime:日期時(shí)間類(lèi)型。映射到數(shù)據(jù)庫(kù)中的是datetime類(lèi)型,在使用的時(shí)候,傳遞datetime.datetime()進(jìn)去

Float:浮點(diǎn)類(lèi)型

Column類(lèi)常用的參數(shù)

primary_key:主鍵,True和False

autoincrement:是否自動(dòng)增長(zhǎng),True和False

unique:是否唯一

nullable:是否可空,默認(rèn)是True

default:默認(rèn)值

onupdate:在更新的時(shí)候,一般用在時(shí)間上面

好了,今天就先介紹到這里吧,下次帶給大家的就是ORM
的增刪查改

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44374.html

相關(guān)文章

  • Flask開(kāi)發(fā)記錄系列之一項(xiàng)目骨架

    第一步,完成項(xiàng)目骨架。 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...

    xiaoqibTn 評(píng)論0 收藏0
  • 通過(guò)demo學(xué)習(xí)OpenStack開(kāi)發(fā)所需的基礎(chǔ)知識(shí) -- 數(shù)據(jù)庫(kù)(1)

    摘要:另外,項(xiàng)目在單元測(cè)試中使用的是的內(nèi)存數(shù)據(jù)庫(kù),這樣開(kāi)發(fā)者運(yùn)行單元測(cè)試的時(shí)候不需要安裝和配置復(fù)雜的數(shù)據(jù)庫(kù),只要安裝好就可以了。而且,數(shù)據(jù)庫(kù)是保存在內(nèi)存中的,會(huì)提高單元測(cè)試的速度。是實(shí)現(xiàn)層的基礎(chǔ)。項(xiàng)目一般會(huì)使用數(shù)據(jù)庫(kù)來(lái)運(yùn)行單元測(cè)試。 OpenStack中的關(guān)系型數(shù)據(jù)庫(kù)應(yīng)用 OpenStack中的數(shù)據(jù)庫(kù)應(yīng)用主要是關(guān)系型數(shù)據(jù)庫(kù),主要使用的是MySQL數(shù)據(jù)庫(kù)。當(dāng)然也有一些NoSQL的應(yīng)用,比如Ce...

    warnerwu 評(píng)論0 收藏0
  • Flask 插件系列 - Flask-SQLAlchemy

    摘要:程序中最常用的莫過(guò)于關(guān)系型數(shù)據(jù)庫(kù)了,也稱(chēng)數(shù)據(jù)庫(kù)。對(duì)象是類(lèi)的實(shí)例,表示程序使用的數(shù)據(jù)庫(kù)。本文由發(fā)表于個(gè)人博客,采用自由轉(zhuǎn)載保持署名非商用禁止演繹協(xié)議發(fā)布。非商業(yè)轉(zhuǎn)載請(qǐng)注明作者及出處。本文標(biāo)題為插件系列本文鏈接為更多閱讀 簡(jiǎn)介 Web 開(kāi)發(fā)中,一個(gè)重要的組成部分便是數(shù)據(jù)庫(kù)了。Web 程序中最常用的莫過(guò)于關(guān)系型數(shù)據(jù)庫(kù)了,也稱(chēng) SQL 數(shù)據(jù)庫(kù)。另外,文檔數(shù)據(jù)庫(kù)(如 mongodb)、鍵值對(duì)數(shù)據(jù)...

    LoftySoul 評(píng)論0 收藏0
  • flask-admin 快速打造博客 系列

    摘要:前言我想分享快速打造博客的詳細(xì)教程,可是發(fā)現(xiàn)網(wǎng)易課堂已經(jīng)有相應(yīng)的免費(fèi)課堂了,所以就不打算一點(diǎn)一滴的在這里做筆記,分享這些東西了。所以我主要集中在使用上的講解。可我還是錄了一套視頻效果不是很好,稍后想分享給大家。 前言: 我想分享flask+flask-admin快速打造博客的詳細(xì)教程,可是發(fā)現(xiàn)網(wǎng)易課堂已經(jīng)有相應(yīng)的免費(fèi)課堂了,所以就不打算一點(diǎn)一滴的在這里做筆記,分享這些東西了。所以我主要...

    李世贊 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Caizhenhao

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<