sqlalchemy_入门

Posted summerkxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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:[email protected]: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:[email protected]: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 = "summer",fullname = "[email protected]") #传入参数并执行
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)

 

以上是关于sqlalchemy_入门的主要内容,如果未能解决你的问题,请参考以下文章

声明式 SQLAlchemy 关系()的入门问题

基础入门_Python-模块和包.深入SQLAlchemy之事务回滚与反射还原对象?

Flask入门之SQLAlchemy配置与数据库连接

基础入门_Python-模块和包.深入SQLAlchemy之列级别约束与表级别约束?

基础入门_Python-模块和包.深入SQLAlchemy之玩转各种增删查改操作?

Python SQLAlchemy入门教程