1. 程式人生 > >Flask+SQLAlchemy入門使用

Flask+SQLAlchemy入門使用

程式碼示例

1. 插入與查詢

# -*- coding: utf-8 -*-

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import create_engine, Table,select, Column, Integer, String, MetaData, ForeignKey

app = Flask(__name__)

# 配置 sqlalchemy 資料庫驅動
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+mysqlconnector://user:
[email protected]
:3306/test?charset=utf8'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False # 初始化 db = SQLAlchemy(app) class User(db.Model): """ 定義了三個欄位, 資料庫表名為model名小寫 """ id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80
), unique=True) fullname = db.Column(db.String(120), unique=True) def __init__(self, name, fullname): self.name = name self.fullname = fullname def __repr__(self): return '<User %r>' % self.username def save(self): db.session.add(self) db.session.commit() u = User(name='admin'
, fullname='[email protected]') db.session.add(u) db.session.commit() users = User.query.all()

插入中文需要使用Unicode字串。

2. 左聯接查詢

pages = db.session.query(表1, 表2).outerjoin(表2, 表1.SiteId == 表2.SiteId)

3. 條件查詢

# conditions
if _SiteId:
    pages = pages.filter(表1.SiteId == _SiteId)

4. 分頁

results = results.order_by(sidx + ' ' + sord)
pagination = results.paginate(page, per_page=rows, error_out=False)
results = pagination.items

5. restful服務

return json.dumps({'d': {'Table': {'rows': new_pages}, 'Total': total, 'ex': '', 'Records': count, 'Page': page}}, cls=AlchemyEncoder)

AlchemyEncoder

# -*- coding: UTF-8 -*-
from sqlalchemy.ext.declarative import DeclarativeMeta
import json
import datetime


class AlchemyEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj.__class__, DeclarativeMeta):
            # an SQLAlchemy class
            fields = {}
            for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']:
                data = obj.__getattribute__(field)
                try:
                    json.dumps(data)     # this will fail on non-encodable values, like other classes
                    fields[field] = data
                except TypeError:    # 添加了對datetime的處理
                    if isinstance(data, datetime.datetime):
                        fields[field] = data.isoformat()
                    elif isinstance(data, datetime.date):
                        fields[field] = data.isoformat()
                    elif isinstance(data, datetime.timedelta):
                        fields[field] = (datetime.datetime.min + data).time().isoformat()
                    else:
                        fields[field] = None
            # a json-encodable dict
            return fields

        return json.JSONEncoder.default(self, obj)

相關推薦

Flask+SQLAlchemy入門使用

程式碼示例 1. 插入與查詢 # -*- coding: utf-8 -*- from flask import Flask from flask_sqlalchemy import SQ

Flask-SQLAlchemy 快速入門

一個最小的應用 對於通常情況,只有一個 Flask 應用,你需要做的全部就是建立你的 Flask 應用, 選擇載入你的配置,然後在建立SQLALchemy時把應用傳遞給它。 一旦建立,這個物件會包含sqlalchemy和sqlalchemy.orm中 的所有函式和助手。此外,它還提供了一個名為Model

Flask-Sqlalchemy設置時間默認值

flask時間類型import datetime t = Table("mytable", meta, Column(‘id‘, Integer, primary_key=True), # define ‘last_updated‘ to be populated with datetime.n

Flask-sqlalchemy 語法總結

func 刪除表 mode 過濾 span group fun flask time Flask-sqlalchemy 語法總結 ** DDLdb.create_all() :創建實體表db.drop_all(): 刪除表 1)插入表Db.session.add(user)

flask-sqlalchemy基本操作數據庫

flow class ini html tex char eat light pos # -*- coding: utf-8 -*- from sqlalchemy.ext.declarative import declarative_base from sqlalche

flask-sqlalchemy

args tween users connector ast als aps tail 分組 一. 介紹 SQLAlchemy是一個基於Python實現的ORM框架。該框架建立在 DB API之上,使用關系對象映射進行數據庫操作,簡言之便是:將類和對象轉換

Flask入門到精通之flask擴展

dev 入門到精通 上下 for 開發者 cer -s arguments pip Flask被設計成可擴展形式,因此並沒有提供一些重要的功能,比如數據庫和用戶認證,所以開發者可以自由選擇最適合程序的包,或者按需求自行開發。社區成員開發了大量不同用途的擴展,如果這還不能滿足

Flask入門到精通之Flask-Bootstrap的使用

兩個 contain tab data title 出現 rom super 層疊   Bootstrap(http://getbootstrap.com/)是Twitter 開發的一個開源框架,它提供的用戶界面組件可用於創建整潔且具有吸引力的網頁,而且這些網頁還能兼容所有

Flask入門到精通之鏈接的使用

相對 入門到 for 模板 程序 瀏覽器 函數 直接 div   在Web開發中,任何具有多個路由的程序都需要可以連接不同頁面的鏈接,例如導航條。   在模板中直接編寫簡單路由的URL 鏈接不難,但對於包含可變部分的動態路由,在模板中構建正確的URL 就很困難。而且,直接編

Flask入門到精通之Flask-Moment本地化日期和時間

display second res width 依賴 post spl 分發 temp   Moment.js 是一個簡單易用的輕量級JavaScript日期處理類庫,提供了日期格式化、日期解析等功能。它支持在瀏覽器和NodeJS兩種環境中運行。此類庫能夠 將給定的任意日

Flask入門到精通之模型定義

rul lena 系列 pic ret blog integer mod type   模型這個術語表示程序使用的持久化實體。在ORM 中,模型一般是一個Python 類,類中的屬性對應數據庫表中的列。   Flask-SQLAlchemy 創建的數據庫實例為模型提供了一個

Flask入門到精通之大型程序的結構一

bootstrap jinja 運行 body 精通 強制 上下文 htm Coding   盡管在單一腳本中編寫小型Web 程序很方便,但這種方法並不能廣泛使用。程序變復雜後,使用單個大型源碼文件會導致很多問題。不同於大多數其他的Web 框架,Flask 並不強制要求大型

flask SQLAlchemy

cat world 文件 true fig 數據 __name__ run python 介紹 SQLAlchemy是Python編程語言下的一款ORM框架,該框架建立在數據庫API之上,使用關系對象映射進行數據庫操作,簡言之便是:將對象轉換成SQL,然後使用數據API執

flask SQLALchemy外鍵及約束

== 文章 設定 反向引用 null 關聯 conf rsquo all from flask import Flask,session from flask_sqlalchemy import SQLAlchemy import config app = F

FLASK簡單入門

字符串 靜態文件 val 完整 stat 布局 uic eth ast 假定你已經安裝好了 Flask。如果沒有,請跳轉到 安裝 章節。 一個最小的應用? 一個最小的 Flask 應用看起來會是這樣: from flask import Flask app = Fla

sqlalchemyflask-sqlalchemy的幾種分頁方法

elf offset 分頁查詢 order == ems div statement ron sqlalchemy中使用query查詢,而flask-sqlalchemy中使用basequery查詢,他們是子類與父類的關系 假設 page_index=1,page_siz

Flask-SQLAlchemy使用方法

會話 分類 _id 動態 del prim dmi rep mod Flask-SQLAlchemy使用起來非常有趣,對於基本應用十分容易使用,並且對於大型項目易於擴展。有關完整的指南,請參閱 SQLAlchemy 的 API 文檔。 常見情況下對於只有一個 Flask 應

flask ai 入門

前端框架 手寫識別 前端 ber ask lena clas 使用 log 1、flask-examples https://github.com/miguelgrinberg/flask-examples 2、flask數據交互 https://blog.cs

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

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

Python中Flask基礎入門(四)

資料庫基本操作 在Flask-SQLAlchemy中,插入、修改、刪除操作,均由資料庫會話管理。會話用db.session表示。在準備把資料寫入資料庫前,要先將資料新增到會話中然後呼叫commit()方法提交會話。 資料庫會話是為了保證資料的一致性,避免因部分更新導致資料不一致。提交操作把會