国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)

這篇具有很好參考價值的文章主要介紹了flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

關(guān)于Flask數(shù)據(jù)庫

  • Flask沒有指定使用的數(shù)據(jù)庫,不像django提供了orm數(shù)據(jù)庫抽象層,可以直接采用對象的方式操作數(shù)據(jù)庫。但為了開發(fā)效率,在開發(fā)Flask項目中一般會選擇 SQLALchemy 來操作數(shù)據(jù)庫,類似django的ORM.
  • SQLALchemy實際是對數(shù)據(jù)庫的抽象,讓開發(fā)者不直接使用sql語句進(jìn)行開發(fā),而是通過Python對象來操作數(shù)據(jù)庫。

以下所有的操作都在PyCharm中進(jìn)行

flask連接sqlite

1. 下載安裝

  • 安裝flask

pip install flask

  • 安裝 Flask-SQLAlchemy

pip install Flask-SQLAlchemy

2. 設(shè)置連接

== flask連接sqlite數(shù)據(jù)庫(以下可能會報錯,請注意注釋!)==

1. 代碼
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)

# 【1】注釋以下兩行后可能會報錯: RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set.
# app_ctx = app.app_context()     
# app_ctx.push()

class BaseConfig():
    DEBUG = True
    # 獲取項目目錄
    APP_PATH = os.path.dirname(__file__)
    # sqlite數(shù)據(jù)庫url
    SQLALCHEMY_DATABASE_URI = f'sqlite:///{APP_PATH}/database'

app.config.from_object(BaseConfig)

# 創(chuàng)建數(shù)據(jù)庫連接,管理項目
db = SQLAlchemy(app)

class User(db.Model):  #模型類繼承db.Model
	"""創(chuàng)建User表"""	
	#  SQLAlchemy 需要手動執(zhí)行主鍵列,第一個參數(shù)是 字段類型,第二個參數(shù)是約束條件
    id = db.Column(db.INTEGER, primary_key=True)  
    username = db.Column(db.String(50))
    password = db.Column(db.String(40))    
	# 【2】若想增加一個字段,run之后并沒有加入表中,可以先刪除表,再run,然后刷新即可加入(因為該表已存在,不會重新創(chuàng)建表了)
	# desc = db.Column(db.String(40))   
	
if __name__ == '__main__':
	# 【3】刪除所有表,注意這條是危險命令,會將模型類對應(yīng)數(shù)據(jù)庫中的表物理刪除。在實際生產(chǎn)環(huán)境下勿用。
	# db.drop_all()
    db.create_all()   # 創(chuàng)建所有的表
2. pycharm中操作sqlite
問題分析
- 注釋【1】問題:RuntimeError: Working outside of application context.

直接運(yùn)行以上代碼,會發(fā)現(xiàn)報錯“RuntimeError: Working outside of application context.”(下圖),需要撤銷注釋【1】
flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
解決:請看大神操作

  • 運(yùn)行之前
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
  • 再次運(yùn)行,會發(fā)現(xiàn)出現(xiàn)了數(shù)據(jù)庫
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
- 注釋【2】問題:如何新增字段?
  • 新增一條字段后,運(yùn)行,刷新表后并沒有顯示新增字段,
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
  • 將注釋【3】撤銷,再運(yùn)行,刷新表后就可發(fā)現(xiàn)新增的字段名。
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記

3. 附:配制鍵 & 常用數(shù)據(jù)庫的鏈接URI

1. Flask-SQLAlchemy 配置鍵

flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記

2. 常用數(shù)據(jù)庫的鏈接URI

URI: 統(tǒng)一資源標(biāo)識符,用于標(biāo)識某一互聯(lián)網(wǎng)資源名稱的字符串

數(shù)據(jù)庫 URI
MySQL mysql://username:password@hostname/database
Postgres postgresql://username:password@hostname/database
SQLite (Unix) sqlite:python/data/database
SQLite (Windows) sqlite:///c:/db/data/database
Oracle oracle://scott:tiger@127.0.0.1:1521/sidname

字段說明:
username: 登錄數(shù)據(jù)庫的用戶名
password: 登錄數(shù)據(jù)庫的密碼
hostname:服務(wù)器主機(jī)ip,可以是本地主機(jī)(localhost)也可以是遠(yuǎn)程服務(wù)器
database:表示要使用的數(shù)據(jù)庫

在ubuntu中連接mysql要先創(chuàng)建數(shù)據(jù)庫:
先在mysql中創(chuàng)建數(shù)據(jù)庫:

# 連接mysql
mysql -uroot -pmysql
# 查看所有數(shù)據(jù)庫
show databases;
# 創(chuàng)建數(shù)據(jù)庫名為 py
create database py charset=utf8;

flask連接mysql

1. 安裝pymysql

pip install pymysql # 首先保證安裝有mysql應(yīng)用程序

2. flask連接mysql

- 代碼
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os
import pymysql

pymysql.install_as_MySQLdb()

app = Flask(__name__)

# 不加以下兩行可能會報錯  RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set.
app_ctx = app.app_context()     
app_ctx.push()


class BaseConfig():
    DEBUG = True
    # 獲取項目目錄
    APP_PATH = os.path.dirname(__file__)
    # sqlite數(shù)據(jù)庫url
    # SQLALCHEMY_DATABASE_URI = f'sqlite:///{APP_PATH}/database'

    # mysql數(shù)據(jù)庫url
    SQLALCHEMY_DATABASE_URI = 'mysql://username:password@hostname/database'  # 填寫自己mysql數(shù)據(jù)庫的用戶名,密碼,主機(jī)IP端口,數(shù)據(jù)庫名 例如:hostname:127.0.0.1:3306

app.config.from_object(BaseConfig)

# 創(chuàng)建數(shù)據(jù)庫連接,管理項目
db = SQLAlchemy(app)

class User(db.Model):  #模型類繼承db.Model
    id = db.Column(db.INTEGER, primary_key=True)
    username = db.Column(db.String(50))
    password = db.Column(db.String(40))   
    # desc = db.Column(db.String(40))   # 增加一個字段 run后沒有加入表中,要先刪除表,再run,然后刷新表


if __name__ == '__main__':
    # 刪除所有表
    # db.drop_all()
    db.create_all()   # 創(chuàng)建所有的表

- 連接mysql
1. 先創(chuàng)建一個數(shù)據(jù)庫

flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記

2. pycharm中操作mysql

flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記

  • 測試連接時,如果出現(xiàn)了如下報錯:Server returns invalid timezone. Need to set ‘serverTimezone’ property.
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
  • 原因:時區(qū)不一致,MySQL驅(qū)動中默認(rèn)時區(qū)是UTC,與本地時間(中國)相差8個小時。
    GMT(Greenwich Mean Time):格林威治標(biāo)準(zhǔn)時間
    UTC:世界標(biāo)準(zhǔn)時間
    CST(China Standard Time):中國標(biāo)準(zhǔn)時間
    GMT + 8 = UTC + 8 = CST
  • 方法:
    點擊Set time zone,在UTC后+8(或者改為GMT)
    flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記
3. 連接成功

flask sqlite,Python學(xué)習(xí)筆記,數(shù)據(jù)庫,flask,筆記文章來源地址http://www.zghlxwxcb.cn/news/detail-824700.html

到了這里,關(guān)于flask筆記 02 | Flask數(shù)據(jù)庫連接(sqlite、mysql)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Flask 數(shù)據(jù)庫 連接池、DBUtils、http 連接池

    Flask 數(shù)據(jù)庫 連接池、DBUtils、http 連接池

    DBUtils 是一套用于管理 數(shù)據(jù)庫 \\\" 連接池 \\\" 的Python包,為 \\\"高頻度、高并發(fā)\\\"? 的數(shù)據(jù)庫訪問提供更好的性能,可以自動管理連接對象的創(chuàng)建和釋放。 并允許對非線程安全的數(shù)據(jù)庫接口進(jìn)行線程安全包裝和連接。 該連接可在各種多線程環(huán)境中使用。 使用場景:如果使用的是流行

    2024年02月04日
    瀏覽(19)
  • flask-session、數(shù)據(jù)庫連接池

    flask-session、數(shù)據(jù)庫連接池

    flask 自帶session---》以cookie的形式放到了瀏覽器中---》加密 真正的session,是在服務(wù)端存儲 ?? ?-django中存在djangosession表中 ? ? -flask中,使用第三方,保存在---》redis中---》flask-session 使用步驟 高版本的flask出現(xiàn)一個問題: ????????用高版本:在app中放一個參數(shù) ?app.sessio

    2024年02月14日
    瀏覽(16)
  • (二十七)Flask之?dāng)?shù)據(jù)庫連接池DBUtils庫

    (二十七)Flask之?dāng)?shù)據(jù)庫連接池DBUtils庫

    ????作者介紹:【孤寒者】—CSDN全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、HDZ核心組成員、華為云享專家Python全棧領(lǐng)域博主、CSDN原力計劃作者 ???? 本文已收錄于Flask框架從入門到實戰(zhàn)專欄 :《Flask框架從入門到實戰(zhàn)》 ???? 熱門專欄推薦 :《Python全棧系列教程》、《爬蟲從入門到精通系列

    2024年04月13日
    瀏覽(15)
  • Flask狼書筆記 | 05_數(shù)據(jù)庫

    Flask狼書筆記 | 05_數(shù)據(jù)庫

    這一章學(xué)習(xí)如何在Python中使用DBMS(數(shù)據(jù)庫管理系統(tǒng)),來對數(shù)據(jù)庫進(jìn)行管理和操作。本書使用 SQLite 作為示例。 注 :按下 Ctrl+F5 ,或 Shift+F5 可以清除瀏覽器緩存。 分為SQL(Structured Query Language)數(shù)據(jù)庫和NoSQL(Not Only SQL)數(shù)據(jù)庫。 SQL :稍顯復(fù)雜,但不容易出錯,可以適應(yīng)大

    2024年02月09日
    瀏覽(47)
  • 如何使用Flask-SQLAlchemy來管理數(shù)據(jù)庫連接和操作數(shù)據(jù)?

    首先,我們需要安裝Flask-SQLAlchemy。你可以使用pip來安裝它,就像這樣: 好了,現(xiàn)在我們已經(jīng)有了一個可以操作數(shù)據(jù)庫的工具,接下來讓我們來看看如何使用它吧! 首先,我們需要創(chuàng)建一個Flask應(yīng)用對象,并配置數(shù)據(jù)庫的連接字符串和師: 現(xiàn)在,我們已經(jīng)創(chuàng)建了一個數(shù)據(jù)庫,

    2024年02月15日
    瀏覽(46)
  • 利用yolov8零售商品識別實現(xiàn)的智能結(jié)算系統(tǒng) yolo+后端flask+數(shù)據(jù)庫sqlite+前端html(從零開始,全流程教學(xué))

    利用yolov8零售商品識別實現(xiàn)的智能結(jié)算系統(tǒng) yolo+后端flask+數(shù)據(jù)庫sqlite+前端html(從零開始,全流程教學(xué))

    全流程 教程,從數(shù)據(jù)采集到模型使用到最終展示。 支持用戶點擊添加至購物車、圖片識別添加至購物車、攝像頭識別添加至購物車,還包括用戶信息,商品展示等功能。若有任何疑問和建議歡迎評論區(qū)討論。 攝像頭識別添加至購物車 圖片識別添加至購物車 用戶點擊添加至

    2024年02月10日
    瀏覽(75)
  • 將網(wǎng)頁數(shù)據(jù)讀入數(shù)據(jù)庫+將數(shù)據(jù)庫數(shù)據(jù)讀出到網(wǎng)頁——基于python flask實現(xiàn)網(wǎng)頁與數(shù)據(jù)庫的交互連接【全網(wǎng)最全】

    將網(wǎng)頁數(shù)據(jù)讀入數(shù)據(jù)庫+將數(shù)據(jù)庫數(shù)據(jù)讀出到網(wǎng)頁——基于python flask實現(xiàn)網(wǎng)頁與數(shù)據(jù)庫的交互連接【全網(wǎng)最全】

    【全網(wǎng)最全!保姆級教學(xué)!!】 本篇博客基于flask技術(shù),實現(xiàn)數(shù)據(jù)庫和網(wǎng)頁端的交互。 實現(xiàn)效果:在網(wǎng)頁端輸入數(shù)據(jù),能夠?qū)?shù)據(jù)存入數(shù)據(jù)庫。反向操作時,能將數(shù)據(jù)庫的數(shù)據(jù)取出,顯示在網(wǎng)頁端。不僅如此,還支持?jǐn)?shù)據(jù)的查詢和修改。 ?讀取網(wǎng)頁數(shù)據(jù)存入數(shù)據(jù)庫,效果如下

    2024年02月13日
    瀏覽(22)
  • python Flask項目使用SQLalchemy連接數(shù)據(jù)庫時,出現(xiàn)RuntimeError:Working outside of application context.的解決過程記錄

    在使用python的Flask框架跟著教程編寫項目時,我跟著教程使用了三個文件來組織,分別是main.py(主程序),module.py(數(shù)據(jù)庫模型),controller.py(藍(lán)圖模塊程序,用Blueprint銜接) 在主程序中,創(chuàng)建app、SQLalchemy實例對象db并將二者綁定 在module.py中,導(dǎo)入主程序中的db和app,創(chuàng)建

    2024年02月09日
    瀏覽(22)
  • Flask數(shù)據(jù)庫操作-Flask-SQLAlchemy

    Flask數(shù)據(jù)庫操作-Flask-SQLAlchemy

    Flask中一般使用flask-sqlalchemy來操作數(shù)據(jù)庫。flask-sqlalchemy的使用介紹如下: 一、SQLAlchemy SQLALchemy 實際上是對數(shù)據(jù)庫的抽象,讓開發(fā)者不用直接和 SQL 語句打交道,而是通過 Python 對象來操作數(shù)據(jù)庫,在舍棄一些性能開銷的同時,換來的是開發(fā)效率的較大提升。 SQLAlchemy是一個關(guān)

    2024年02月22日
    瀏覽(26)
  • flask數(shù)據(jù)庫操作

    flask數(shù)據(jù)庫操作

    本文將詳細(xì)介紹在Flask Web應(yīng)用中如何設(shè)計數(shù)據(jù)庫模型,并使用Flask-SQLAlchemy等擴(kuò)展進(jìn)行數(shù)據(jù)庫操作的最佳實踐。內(nèi)容涵蓋數(shù)據(jù)模型設(shè)計,ORM使用,關(guān)系映射,查詢方法,事務(wù)處理等方面。通過本文,您可以掌握Flask數(shù)據(jù)庫應(yīng)用的基本知識。 Flask作為一個流行的Python Web框架,提供了高度的

    2024年02月14日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包