sqlalchemy_入门

数据库操作软件,类似于php里面的pdo,但是比pdo更灵活、复杂,能将数据库中的表和程序中的class一一对应,方便调用,如果前期能写好class,后期不用写sql;
 
安装
pip install flask_sqlalchemy

创建表:

 1 from flask_sqlalchemy import SQLAlchemy
 2 from sqlalchemy import *
 3 from sqlalchemy.orm import *
 4 #上面导入的文件可能有些用不到;
 5 engine=create_engine("mysql://root:root@localhost:3306/flask?charset=utf8",echo=True)
 6 metadata=MetaData(engine)
 7 goods=Table('goods',metadata,
 8     Column('id',Integer,primary_key=True),
 9     Column('name',String(20)),
10     Column('fullname',String(40)),
11     )
12 metadata.create_all()

插入数据:

 1 #-*-coding:utf-8-*-
 2 from flask_sqlalchemy import SQLAlchemy
 3 from sqlalchemy import *
 4 from sqlalchemy.orm import *
 5 #链接数据库并初始化对象
 6 engine=create_engine("mysql://root:root@localhost:3306/flask?charset=utf8",echo=True)
 7 metadata=MetaData(engine)
 8 
 9 users_table = Table("goods",metadata,autoload=True)  #这个应该是初始化表
10 i = users_table.insert() #调用对象中的insert()方法,产生语句:INSERT INTO goods (id, name, fullname) VALUES (%s, %s, %s)
11 result = i.execute(name = "xxx",fullname = "947277707@qq.com") #传入参数并执行
12 print(result)
查询数据
1、看到插入数据用的这种方式,于是想到了查询应该也可以吧;
1 users_table = Table("goods",metadata,autoload = True)
2 i = users_table.select()
3 result = i.execute(name="xiaoge")
4 #这种方式查询好像有点尴尬,对象里面包含对象,不能直接看到查询结果
5 print(result)

2、将表与class建立对应关系

 1 goods_table = Table("goods",metadata,autoload = True)
 2 '''
 3 建立表和class的映射关系
 4 '''
 5 class Goods(object):
 6   def __repr__(self):
 7       return "%s(%r,%r)" % (self.__class__,self.name,self.fullname)
 8 mapper(Goods,goods_table)
 9 '''建立关系结束'''
10 session = create_session()
11 query = session.query(Goods)
12 u=query.filter_by(name = "xiaoge").first()
13 print(u.fullname)
object.__dict__查看对象中的内容,不递归显示
 
查询所有数据:
 1 goods_table = Table("goods",metadata,autoload = True)
 2 '''
 3 建立表和class的映射关系
 4 '''
 5 class Goods(object):
 6   def __repr__(self):
 7       return "%s(%r,%r)" % (self.__class__,self.name,self.fullname)
 8 mapper(Goods,goods_table)
 9 '''建立关系结束'''
10 session = create_session()
11 query = session.query(Goods)
12 u = query.all()
13 for i in u:#返回多个对象,遍历即可
14     print(i.name)

 

posted on 2017-07-03 15:05  summerkxy  阅读(187)  评论(0编辑  收藏  举报

导航