标签:
SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
虽然小弟是个小菜鸟,虽然小弟对数据库没有见多识广,但说心里话当我看到SQLAlchemy这个架构设计时,真的有一种神奇的感觉。简洁明了,逻辑清晰。原谅小弟lowB的心态。最关键的是不需要再研究那些复杂繁琐的数据库操作细节了。
使用SQLAlchemy操作数据库的方式方法有很多种,如通过执行原生SQL语句操作,通过对象操作等。但是在这里只介绍一种最终执行结果的操作,而不是类似中间状态的一些操作。
使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有组件对数据进行操作。根据类创建对象,对象转换成SQL,执行SQL。
#!/usr/bin/env python
# _*_coding:utf-8 _*_
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
Base = declarative_base()
engine = create_engine("mysql+mysqldb://root:123456@192.168.1.106:3306/test1", max_overflow=5, echo=True)
class Host(Base): # 这个类就是一个表,这里只是映射成功了
__tablename__ = ‘hosts‘
id = Column(Integer, primary_key=True, autoincrement=True)
hostname = Column(String(64), unique=True, nullable=False)
ip_addr = Column(String(128), unique=True, nullable=False)
prot = Column(Integer, default=22)
# 寻找Base的所有子类,按照子类的结构在数据库中生成对应的数据表信息
Base.metadata.create_all(engine) # 创建所有的表结构
if __name__ == ‘__main__‘:
SessionCls = sessionmaker(bind=engine) # 创建与数据库会话的session class,返回的是一个类,而不是一个实例
session = SessionCls() # 连接数据库的实例,就是用它来对数据库做实际的操作
# ###################### 增 #############################
# 创建表中数据的实例
# h1 = Host(hostname=‘localhost‘, ip_addr=‘127.0.0.1‘)
# h2 = Host(hostname=‘centos‘, ip_addr=‘172.16.16.166‘)
# session.add(h1) # 单条创建
# session.add_all([h1, h2]) # 批量创建
# session.commit() # 真正的提交数据库操作
# ###################### 查 ###########################
# obj = session.query(Host).filter(Host.hostname == ‘centos‘).all()
# print obj
# ret = session.query(User).filter_by(name=‘sb‘).first()
# ret = session.query(User).filter_by(name=‘sb‘).all()
# ret = session.query(User).filter(User.name.in_([‘sb‘,‘bb‘])).all()
# ret = session.query(User.name.label(‘name_label‘)).all()
# print ret,type(ret)
# ret = session.query(User).order_by(User.id).all()
# ret = session.query(User).order_by(User.id)[1:3]
# session.commit()
# ###################### 删除 ###########################
# obj = session.query(Host).filter(Host.hostname == ‘centos‘).first()
# session.delete(obj)
#
# session.commit()
# ###################### 更新 ###########################
# obj = session.query(Host).filter_by(hostname=‘localhost‘).first()
# obj.hostname = "chenchao"
# print obj
# session.commit()
更多功能参见文档,猛击这里下载PDF
标签:
原文地址:http://www.cnblogs.com/chenchao1990/p/5416420.html