Python工具之SQLAlchemy
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python工具之SQLAlchemy相关的知识,希望对你有一定的参考价值。
工具介绍:SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。
工作方式:通过定义类的方式来操作数据库,一个类对应数据库中的一个表,一个类对象对应表中的一行数据,通过实例化类的方式来向数据库表中插入数据,通过对象.字段名来获取表中相应字段的值。
以一个具体的例子来说明:
#!/usr/bin/env python # -*- coding:utf-8 -*- from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String, DATETIME from sqlalchemy.orm import sessionmaker from sqlalchemy import create_engine # 以字典的形式配置好mysql数据库的连接信息 mysql_dic = { ‘mysql_user‘:‘test‘, ‘mysql_pass‘:‘1234‘, ‘mysql_ip‘:‘192.168.192.168‘, ‘mysql_port‘:3306, ‘mysql_db‘:‘test‘, } class Connect(object): # 创建一个专门连接数据库的类 Base = declarative_base() # 创建对象的基类 def __init__(self): mysql_str = "mysql+mysqldb://{mysql_user}:{mysql_pass}@{mysql_ip}:{mysql_port}/{mysql_db}" # 连接数据库的命令行 mysql_con = mysql_str.format(**mysql_dic) # 格式化命令 self.engine = create_engine(mysql_con, max_overflow=5) # 初始化数据库连接 Session = sessionmaker(bind=self.engine) # 创建一个会话来操作数据库 self.session = Session() def create_table(self): ‘‘‘寻找Base的所有子类,按照子类的结构在数据库中生成对应的数据表信息‘‘‘ Connect.Base.metadata.create_all(self.engine) class Server(Connect.Base): # 定义一个类(其实就是一张数据库表)继承Base基类 __tablename__ = ‘server‘ # 表名,以下均为表字段 id = Column(Integer,autoincrement=1,primary_key=True) date = Column(DATETIME) user = Column(String(20)) ip = Column(String(50)) group = Column(String(50)) if __name__ == ‘__main__‘: c = Connect() # 连接数据库并创建程序与数据库之间的会话 c.create_table() # 创建定义的server表 # 增加数据 s = Server(user=‘test‘,ip=‘192.168.100.1‘,group=‘monitor‘) # 实例化一个类对象 c.session.add(s) # 通过session会话向表中添加一行数据(一个类对象) # c.session.add_all([ # Server(user=‘test‘,ip=‘192.168.100.2‘,group=‘monitor‘), # Server(user=‘test‘,ip=‘192.168.100.3‘,group=‘monitor‘), # ]) # 一次添加多条数据 c.session.commit() # 提交 # 删除数据(删除server表中id大于2的数据) c.session.query(Server).filter(Server.id > 2).delete() c.session.commit() # 修改数据(修改server表中id大于2的数据的group字段值为JAVA) c.session.query(Server).filter(Server.id > 2).update({‘group‘ : ‘JAVA‘}) c.session.commit() # 查询数据(查询server表中所有user字段值为test的数据) ret = c.session.query(Server).filter_by(user=‘test‘).all() for i in ret: print i.ip # 获取满足条件的数据中ip字段的值 c.session.close() # 关闭会话
博客的部分内容和思路整理自武沛齐的博客。
本文出自 “一行菜鸟上青天” 博客,请务必保留此出处http://rmeos.blog.51cto.com/761575/1737775
以上是关于Python工具之SQLAlchemy的主要内容,如果未能解决你的问题,请参考以下文章