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
sqlalchemy和flask-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()方法提交會話。 資料庫會話是為了保證資料的一致性,避免因部分更新導致資料不一致。提交操作把會