1. 程式人生 > >在flask框架中使用SQLAlchemy

在flask框架中使用SQLAlchemy

本博文帶領大家使用 SQLAlchemy 連線 MySQL 資料庫,並介紹了使用 SQLAlchemy 進行簡單了 CURD 操作

1、SQLAlchemy是ORM(Object-Relational Mapping:物件關係對映)框架中最有名的一個框架

2、Flask-SQLAlchemy安裝及設定

a、安裝flask-sqlalchemy:

$pip install flask-sqlalchemy

b、如果連線的是mysql資料庫,需要安裝mysqldb:

$ pip install flask-mysqldb

3、 資料庫連線設定在 Flask-SQLAlchemy 中,資料庫使用URL指定,而且程式使用的資料庫必須儲存到Flask配置物件的SQLALCHEMY_DATABASE_URI

app.config[‘SQLALCHEMY_DATABASE_URI’] =
‘mysql://root:[email protected]:3306/db’

解釋下
mysql是資料庫型別,選擇自己要操作的型別,可以有MySQL,Oracle,Postgres,
SQLite,值得一提的是,SQLite需要在開頭是四個斜線
root表示當前使用者名稱# mysql表示資料庫密碼# 127.0.0.1:3306表示localhost,3306是mysql埠號
db表示事先在資料庫中建好的的資料庫名.

其他設定:

動態追蹤修改設定,如未設定只會提示警告

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

查詢時會顯示原始SQL語句

app.config['SQLALCHEMY_ECHO'] = True

配置完成需要去 MySQL 中建立專案所使用的資料庫

$ mysql -uroot -pmysql
$ create database db charset utf8;

其他配置:
這裡寫圖片描述

4、常用的SQLAlchemy欄位型別
這裡寫圖片描述

5、常用的SQLAlchemy列選項
這裡寫圖片描述
6、常用的SQLAlchemy關係選項
這裡寫圖片描述
7、資料庫基本操作及一對多模型

在檢視函式中定義模型類

# 導包
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

# 初始化物件
app = Flask(__name__)

# 新增配置
class Config(object):
    SQLALCHEMY_DATABASE_URI = "mysql://root:[email protected]:3306/db"
    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_ECHO = True  # 會列印原生sql語句,便於觀察

app.config.from_object(Config)

# 將資料庫與物件連線
db = SQLAlchemy(app)

# 定義一個角色類
# 假設一人只能分飾一個角色,但是一個角色可以是多人,所以role是一對多的一
# 在一的一方用relationship來定義這種一對多的關係
class Role(db.Model):
    __tablename__ = "roles"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))
    # backref 固定寫法,表示的是反推
    # 第一個引數表示要關聯的類的模型
    # 第二個引數表示新增加的一個屬性,屬性的名字隨意取
    us = db.relationship("User", backref="role")

    def __repr__(self):
        return "Role = %s" % self.name


class User(db.Model):

    # users表示表名,名稱自定義
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))
    password = db.Column(db.String(128))
    email = db.Column(db.String(128))
    # ForeignKey 在多的一方定義外來鍵
    role_id = db.Column(db.Integer, db.ForeignKey("roles.id"))
    #repr()方法顯示一個可讀字串
    def __repr__(self):
        return "User = %s" % self.name


@app.route("/")
def index():
    return "index page"


if __name__ == '__main__':
    # 建立表
    db.create_all()  
    ro1 = Role(name="admin")

    # 插入一條資料
    db.session.add(ro1)
    db.session.commit()

    ro2 = Role(name="user")
    db.session.add(ro2)
    db.session.commit()

    us1 = User(name='wang', email='[email protected]',
               password='123456', role_id=ro1.id)
    us2 = User(name='zhang', email='[email protected]',
               password='201512', role_id=ro2.id)
    us3 = User(name='chen', email='[email protected]',
               password='987654', role_id=ro2.id)
    us4 = User(name='zhou', email='[email protected]',
               password='456789', role_id=ro1.id)
    us5 = User(name='tang', email='[email protected]',
               password='158104', role_id=ro2.id)
    us6 = User(name='wu', email='[email protected]',
               password='5623514', role_id=ro2.id)
    us7 = User(name='qian', email='[email protected]',
               password='1543567', role_id=ro1.id)
    us8 = User(name='liu', email='[email protected]',
               password='867322', role_id=ro1.id)
    us9 = User(name='li', email='[email protected]',
               password='4526342', role_id=ro2.id)
    us10 = User(name='sun', email='[email protected]',
                password='235523', role_id=ro2.id)

    db.session.add_all([us1, us2, us3, us4, us5, us6, us7, us8, us9, us10])
    db.session.commit()  # 必須提交,資料才能生效
    app.run()

在終端進入資料庫,可以查到資料庫中已經有上面的資料了
這裡寫圖片描述

資料庫操作—-增刪改查
這裡寫圖片描述

這裡寫圖片描述

這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

相關推薦

flask框架使用SQLAlchemy

本博文帶領大家使用 SQLAlchemy 連線 MySQL 資料庫,並介紹了使用 SQLAlchemy 進行簡單了 CURD 操作 1、SQLAlchemy是ORM(Object-Relational Mapping:物件關係對映)框架中最有名的一個框架 2

flask框架,對wtforms的SelectMultipleField的一個報錯處理

pre inf req ESS multi bmi 其中 ews IT 先粘貼代碼: form.py文件: users = SelectMultipleField( label="請選擇用戶", validators=[ DataRequired(

Flask框架常見的一些問題

1. 如何指定接收多個HTTP請求方法? 我們只需要在寫路由時,在路由名後加上一個引數methods,即用列表將你可能使用的方法加入即可。 @app.route('/login/', methods=['GET', 'POST']) 2. 如何判斷使用者請求的HTTP方法? 需

從原始碼解析Python的Flask框架request物件的用法

from flask import requestFlask 是一個人氣非常高的Python Web框架,筆者也拿它寫過一些大大小小的專案,Flask 有一個特性我非常的喜歡,就是無論在什麼地方,如果你想要獲取當前的request物件,只要 簡單的: 從當前request

flask框架使用wtforms

用戶輸入 post 框架 tex call route obj validator html5 一、什麽是wtforms WTForms是一個支持多個web框架的form組件,主要用於對用戶請求數據進行驗證。 安裝: pip3 install WTForms

關於python flask 框架運用cookie問題

請求一個路由後會得到一個response,我們就通過response來操作cookiefrom flask import render_template, flash, redirect,session,url_for,make_response,request,g,json

Flask框架(SQLAlchemy(python3版本)新增資料 )

安裝SQLAlcemy、配置SQLAlcemy、建立模型類可參考:https://blog.csdn.net/wei18791957243/article/details/85254130 1. 在Flask-SQLAlchemy中,插入、修改、刪除操作,均由資料庫會話管理。

Flask框架(SQLAlchemy(python3版本)修改資料的方法和刪除資料 的方法)

 有資料表,          db_demo.py : https://blog.csdn.net/wei18791957243/article/details/85257910  &nb

Flask框架(SQLAlchemy(python3版本)查詢資料的方法,以及定義顯示資訊 )

(SQLAlchemy中新增資料 )https://blog.csdn.net/wei18791957243/article/details/85256848      新增資料,新增好的表       SQlal

Flask框架(flask的資料庫SQLAlchemy(python3),配置、模型類、建立表)

1.  SQLAlchemy是一個關係型資料庫框架,      它提供了高層的ORM和底層的原生資料庫的操作。       flask-sqlalchemy是一個簡化了SQLAlchemy操作的flask擴充套

python web開發-flasksqlalchemy的使用

lin orm框架 linux服務器 select 代碼上傳 database http ali pytho SqlAlchemy是一個python的ORM框架。 在flask中有一個flask-sqlalchemy的擴展,使用起來很方便。 1. 創建一個sql

三十四、python學之Flask框架(六)資料庫:mysql資料庫及Flask-SQLAlchemy

一、資料庫知識回顧: 1.SQL:關係型資料庫,支援結構化查詢語言: 關係型資料庫:以表的形式儲存; 支援結構化查詢語言:SQL語句; 列數固定;行數可變,定義資料,主鍵、外來鍵,引用同表或不同表的主鍵,這種聯絡稱為關係. 2.關於正規化: 第一

pythonflask框架寫簡單的登入介面

flask框架和css的應用 實現的環境: windows環境 eclipse下的pydev pip3 install flask jinja2 步驟一:首先建立一個web.py # -*- coding:utf-8 -*- ''' Created

python 2和python3 引用flask框架連線資料庫sqlalchemy

python 2和python3 引用flask框架連線資料庫sqlalchemy 參考:https://blog.csdn.net/guotiangong/article/details/80139612 Flask-SQLAlchemy Flask-

Flask 框架 是 Python 最流行的 Web 框架之一

Flask 是 Python 中最流行的 Web 框架之一,以小巧、靈活、可擴充套件性強著稱, 熟練掌握Flask 框架,深入解析Flask 框架的精髓,希望掌握Flask 最佳實踐專案。 Flask Web 開發入門 https://funhacks.gitbooks.io/he

python flask框架的入門實例程序 NameError: __name__is not defined!

spa 知識 框架 ret error: 學習 error 劃線 err 剛剛接觸Python,了解了一些基礎知識便開始學習了Python中的flask框架,沒想一進門就載坑啦! 錯誤提示:NameError: __name__is not defined! 出現這種錯

PythonFlask框架專案拆分

新建flask專案,建Python package包,把static、template拉進去, 新建 settings.py、models.py、init.py、ext.py、views.py, 在預設建立的app.py導包, from flask_script import Man

PythonFlask框架SQLALCHEMY_ECHO設定

在用配置類的方式給app設定配置時, SQLALCHEMY_ECHO 這個是記錄列印SQL語句用於除錯的, 一般設定為False, 不然會在控制檯輸出一大堆的東西    /home/python/.virtualenvs/py3_flask/bin/python /home/

深入研究Python-Flask原始碼:flask_sqlalchemySQLAlchemy(object)類

小編從事python-flask框架的後端開發,為了吃透它,小編會不斷的深入研究原始碼,今天從 flask_sqlalchemy中SQLAlchemy(object)類開始深入研究。 class SQLALchemy(object): """ 該類用於將SQLAlche

Pycharmflask框架應用

flask框架應用例項 get方法 伺服器端 server.py 如下 import flask app=flask.Flask(_name_) //啟動一個應用程式 @app.rout("/")//路由的作用 def hello()://定義一個函式 try: provin