赞
踩
ORM技术:Object-Relational Mapping,把关系数据库的表结构映射到对象上
但是由谁来做这个转换呢?所以ORM框架应运而生。
在Python中,最有名的ORM框架是SQLAlchemy。
当时用sqlalchemy时,查询到的是一个对象,而不是列表。解决方法。
一.查询单条数据。
model
from sqlalchemy import Column, String, Integer, ForeignKey # db = SQLAlchemy() from sqlalchemy.orm import relationship from app.models.base import Base class Test(Base): id = Column(Integer,primary_key=True,autoincrement=True) # fourtest= relationship('Fourtest') # uid = Column(Integer,ForeignKey('fourtest.id')) name = Column(String(50),nullable = False) age = Column(String(50), nullable=False) # 查询单条数据 def to_dict(self): return {c.name: getattr(self, c.name) for c in self.__table__.columns} #第二种方法 def to_dict(self): model_dict = dict(self.__dict__) del model_dict['_sa_instance_state'] return model_dict
web
import math from flask import render_template, request from app.models.base import db from app.models.test import Test from app.models.test4 import Fourtest from . import web_blue @web_blue.route('/helo') def hello(): list = Test.query.filter_by(id=1).first() print(type(list))#<class 'app.models.test.Test'> a = list.to_dict() print(a)#{'age': '18', 'id': 1, 'stats': '1', 'name': '猪猪'} return 'helloworld'
查询多条数据。
from sqlalchemy import Column, String, Integer, ForeignKey # db = SQLAlchemy() from sqlalchemy.orm import relationship from app.models.base import Base class Test(Base): id = Column(Integer,primary_key=True,autoincrement=True) # fourtest= relationship('Fourtest') # uid = Column(Integer,ForeignKey('fourtest.id')) name = Column(String(50),nullable = False) age = Column(String(50), nullable=False) def dobule_to_dict(self): result = {} for key in self.__mapper__.c.keys(): if getattr(self, key) is not None: result[key] = str(getattr(self, key)) else: result[key] = getattr(self, key) return result #配合todict一起使用 def to_json(all_vendors): v = [ven.dobule_to_dict() for ven in all_vendors] return v
import math from flask import render_template, request from app.models.base import db from app.models.test import Test from app.models.test4 import Fourtest from . import web_blue @web_blue.route('/helo') def hello(): list = Test.query.filter().all() data = Test.to_json(list) print(data) #[{'stats': '1', 'id': '1', 'name': '猪猪', 'age': '18'}, {'stats': '1', 'id': '2', 'name': '小飞', 'age': '19'}, {'stats': '1', 'id': '3', 'name': '小春', 'age': '18'}] return 'helloworld'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。