武沛齐博客mysql,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()     # 关闭会话

博客的部分内容和思路整理自武沛齐的博客。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值