python+flask開發(fā)屬于自己的個人輕量級web服務(wù)網(wǎng)站(七)數(shù)據(jù)庫部分

數(shù)據(jù)庫部分:

我們選擇MySQL數(shù)據(jù)庫作為我們所使用的數(shù)據(jù)庫。
下載好數(shù)據(jù)庫后,我們新建一個工程,在工程目錄下新建一個config.py的數(shù)據(jù)庫配置文件。
config.py的內(nèi)容如下:

#第一行是數(shù)據(jù)庫文件的模板,要寫成這種形式
#dialect+driver://username:password@host:port/database
DIALECT = 'mysql'
DRIVER = 'mysqldb'
USERNAME = 'root'
PASSWORD = '123456'
HOST = '127.0.0.1'
PORT = '3306'
DATABASE = 'demo'
SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALECT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
SQLALCHEMY_TRACK_MODIFICATIONS = False

配置文件寫好后,在app.py文件中引入配置文件import config,

from flask_sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
db.create_all()

如果這串代碼運行無誤,則代表數(shù)據(jù)庫配置文件導(dǎo)入無誤。執(zhí)行這一步的前提是需要在數(shù)據(jù)庫中創(chuàng)建一個廚師數(shù)據(jù)庫create database databasename

然后我們再在代碼中為數(shù)據(jù)庫創(chuàng)建一張表:假設(shè)我們要創(chuàng)建一張存儲文章的表,表中應(yīng)當(dāng)包括文章id(唯一且自增)、文章題目(可變字符長度且不可為空)、文章內(nèi)容(text文本類型且不為而空)

在MySQL中如何創(chuàng)建一張表
 create table articles{
     id :  int, primarykey,autoincrement;      #id是一個Int類型,主鍵,遞增
     title:varchar,not null;           #title是一個可變字符串類型,非空
     content:text,not null         #content是一個text類型,非空
 }

在Flask中創(chuàng)建一張article表

class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
    content = db.Column(db.Text,nullable=False)

這樣我們就在數(shù)據(jù)庫中創(chuàng)建了一張表,用來存儲文章的id,標(biāo)題,內(nèi)容.

數(shù)據(jù)的增刪改查:

增添數(shù)據(jù)步驟:

1.增添數(shù)據(jù)
2.執(zhí)行增添語句
3.提交事務(wù)

增添數(shù)據(jù)代碼:

article1 = Article(title='four',content='this is four')
db.session.add(article1)
db.session.commit()

查找數(shù)據(jù)步驟:

1.按照sql語句的方式查找數(shù)據(jù)
代碼:

result = Article.query.filter(Article.id == '2').all()
article=result[0]#查找的結(jié)果是以列表的方式存儲的,因此是result[0]
print("id為%d的數(shù)據(jù)標(biāo)題為:%s"%(article.id,article.title))
print("id為%d的數(shù)據(jù)的內(nèi)容為:%s"%(article.id,article.content))

更改數(shù)據(jù)步驟:

1.先查找出需要更改的數(shù)據(jù)
2.更改數(shù)據(jù)
3.提交數(shù)據(jù)
代碼:

result = Article.query.filter(Article.id == '2').all()
result[0].title = 'update'
db.session.commit()

刪除數(shù)據(jù)步驟:

1.先查找出需要刪除的數(shù)據(jù)
2.刪除數(shù)據(jù)
3.提交事務(wù)
代碼:

result = Article.query.filter(Article.id == '1').first()
db.session.delete(result)
db.session.commit()

數(shù)據(jù)庫的基本的增刪改查的功能都在上面了。
我的app.py的網(wǎng)站代碼:

from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object(config)
db = SQLAlchemy(app)
#在MySQL中如何創(chuàng)建一張表
# create table articles{
#     id :  int, primarykey,autoincrement;      #id是一個Int類型,主鍵,遞增
#     title:varchar,not null;           #title是一個可變字符串類型,非空
#     content:text,not null         #content是一個text類型,非空
# }
class Article(db.Model):
    __tablename__ = 'article'
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    title = db.Column(db.String(100),nullable=False)
    content = db.Column(db.Text,nullable=False)

db.create_all()

@app.route('/')
def hello_world():
    #數(shù)據(jù)庫的增刪改查
    ##增加數(shù)據(jù)
    # article1 = Article(title='four',content='this is four')
    # db.session.add(article1)
    #提交事務(wù)
    # db.session.commit()

    #查找數(shù)據(jù)
    #query查找的結(jié)果是以數(shù)組的方式存儲的
    # result = Article.query.filter(Article.id == '2').all()
    # article=result[0]
    # print("id為%d的數(shù)據(jù)標(biāo)題為:%s"%(article.id,article.title))
    # print("id為%d的數(shù)據(jù)的內(nèi)容為:%s"%(article.id,article.content))
    #更改數(shù)據(jù)
    #1.先查找出需要更改的數(shù)據(jù)
    #2.更改數(shù)據(jù)
    #3.提交數(shù)據(jù)
    # result = Article.query.filter(Article.id == '2').all()
    # result[0].title = 'update'
    # db.session.commit()

    #刪除數(shù)據(jù)
    #1.先查找出需要刪除的數(shù)據(jù)
    #2.刪除數(shù)據(jù)
    #3.提交事務(wù)
    result = Article.query.filter(Article.id == '1').first()
    db.session.delete(result)
    db.session.commit()



    return 'hello world'


if __name__ == '__main__':
    app.run(debug=True)

整個代碼上傳至我的github

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當(dāng)在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,975評論 0 9
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,338評論 0 10
  • feisky云計算、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 4,354評論 0 5
  • 最近看了Flask Web開發(fā):基于Python的Web應(yīng)用開發(fā)實戰(zhàn),書中詳細(xì)介紹了Web程序的開發(fā)、測試、部署過...
    SheHuan閱讀 8,907評論 2 33
  • 自編自導(dǎo)一曲目 嘛哩嘛哩搖籃語 本想哼完便睡著 可是腦細(xì)胞過剩 剛一瞇上 眼就掙開 只怪遐想無限 明晚繼續(xù)編曲
    courage9869閱讀 184評論 0 0

友情鏈接更多精彩內(nèi)容