Sqlalchemy的學習使用和常見問題

2021-10-19 07:25:05 字數 1488 閱讀 1364

推薦三個簡單教程

sqlalchemy

python sqlalchemy入門教程(基本用法)

使用sqlalchemy

qa = qarecords(question='something')

db.session.add(qa)

db.session.commit()

print(qa.id)

參考:sqlalchemy之獲取自增id

出現下面的錯誤,提示filter_by()需要乙個引數,但是提供了兩個,原因是我沒有給引數指定引數名,所以可能這個函式判斷不了這個引數應該複製給誰,所以報錯

self.write_session.query(users).filter_by(id).update(name='zhangsan')

給引數指定引數名後:

self.write_session.query(users).filter_by(id=id).update(name='zhangsan')

query = self.write_session.query(zephyr_task).filter_by(id > 10)

print(query.count())

出現這個錯誤而且沒有其他提示資訊,可能性最大的兩種原因是:

(1) 字段長度超過限制

(2) 可以看看是不是字段要求格式和所傳格式不一致

我出現這個錯誤的時候發現是我的有些欄位是字串,但是我賦值的時候賦值的是乙個字典,賦值直接把字典進行json.dumps()轉化成字串後就沒有這個錯誤了

(1) 使用load_only函式

from sqlalchemy.orm import load_only

fields = ['name', 'addr', 'phone', 'url']

companies = session.query(somemodel).options(load_only(*fields)).all()

參考:(2) 使用 with_entities()

flask-sqlalchemy 的 query 是直接查詢 model,查出來的一定是乙個 model 物件。

如果要查詢單個字段的話,應該用 session 去 query model。

a = db.session.query(page.title, page.page).all()

print(a)

b = page.query.with_entities(page.title, page.page).all()

print(b)

這兩個查詢返回的都是乙個列表,列表內的元素是乙個元組,不過不是 python 內建的元組,是 sqlalchemy.util._collections.keyedtuple。

參考:

SQLAlchemy學習筆記

因為後端框架重度使用orm,鑑於sqlalchemy官網沒有中文翻譯,加上經常會被牆,所以搬運些工具到部落格上,以備後用。均為示例,不能直接使用 1 基礎操作 coding utf 8 等於 equals query.filter user.name ed 不等於 not equals query....

sqlalchemy學習筆記

第一 安裝 sudo easy install sqlalchemy 第二 基本的使用 1 先寫個指令碼 嘗試連線mysql 建立一張表 coding utf 8 from sqlalchemy import import sqlalchemy.util as util import string,...

flask 與 SQLAlchemy的使用

安裝模組 pip install flask sqlalchemy在單個python中與flask使用 檔名 manage.py from flask sqlalchemy import sqlalchemy from flask import flask user root password ro...