码迷,mamicode.com
首页 > 数据库 > 详细

python之SQLAchemy、paramiko

时间:2016-08-04 10:16:53      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:

SQLAchemy

SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取执行结果。

技术分享

一、底层处理

使用 Engine/ConnectionPooling/Dialect 进行数据库操作,Engine使用ConnectionPooling连接数据库,然后再通过Dialect执行SQL语句。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from sqlalchemy import create_engine
 
 
engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/t1", max_overflow=5)
 
# 执行SQL
# cur = engine.execute(
#     "INSERT INTO hosts (host, color_id) VALUES (‘1.1.1.22‘, 3)"
# )
 
# 新插入行自增ID
# cur.lastrowid
 
# 执行SQL
# cur = engine.execute(
#     "INSERT INTO hosts (host, color_id) VALUES(%s, %s)",[(‘1.1.1.22‘, 3),(‘1.1.1.221‘, 3),]
# )
 
 
# 执行SQL
# cur = engine.execute(
#     "INSERT INTO hosts (host, color_id) VALUES (%(host)s, %(color_id)s)",
#     host=‘1.1.1.99‘, color_id=3
# )
 
# 执行SQL
# cur = engine.execute(‘select * from hosts‘)
# 获取第一行数据
# cur.fetchone()
# 获取第n行数据
# cur.fetchmany(3)
# 获取所有数据
# cur.fetchall()

二、ORM

使用 ORM/Schema Type/SQL Expression Language/Engine/ConnectionPooling/Dialect 所有组件对数据进行操作。根据类创建对象,对象转换成SQL,执行SQL。

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, ForeignKey, UniqueConstraint, Index
from sqlalchemy.orm import sessionmaker, relationship
engine = create_engine("mysql+pymysql://root:123@127.0.0.1:3306/s13", max_overflow=5)

Base = declarative_base()


# 创建表
class Test(Base):
    __tablename__ = ‘test‘
    nid = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(32))

# 一对多
class Group(Base):
    __tablename__ = ‘group‘
    nid = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(32))

class Users(Base):
    __tablename__ = ‘user‘
    nid = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(32))
    group_id = Column(Integer,ForeignKey(‘group_nid‘))

    def __repr__(self):
        temp = ‘%s - %s - %s‘%(self.nid,self.username,self.group_id)
        return temp

def init_db():
    Base.metable.create_all(engine)


def drop_db():
    Base.metable.drop_all(engine)



Session = sessionmaker(bind=engine)
session = Session()

操作表

技术分享
 1 #定义一个字段
 2 add = User(id=2, name=mxz)
 3 #添加字段
 4 session.add(add)
 5 #添加多个字段
 6 session.add_all([
 7     User(id=3, name=aaa),
 8     User(id=4, name=bbb)
 9 ])
10 #提交以上操作
11 session.commit()

==================================================================

技术分享
1 #删除user表,id大于2的字段
2 session.query(User).filter(User.id > 2).delete()
3 session.commit()

==================================================================

技术分享
1 在执行以下操作
2 #user表里的id等于2的字段修改为id=6
3 session.query(User).filter(User.id == 2).update({id : 6})
4 session.commit()

==================================================================

技术分享
1 # 查询users表下面所有的字段
2 ret = session.query(Users).all()
3 
4 ret = session.query(Users.name, Users.extra).all()
5 # 查询users表下面所有name=mxz的字段
6 ret = session.query(Users).filter_by(name=mxz).all()
7 # 查询users表下面第一个name=mxz的字段
8 ret = session.query(Users).filter_by(name=mxz).first()

 

python之SQLAchemy、paramiko

标签:

原文地址:http://www.cnblogs.com/mxzheng/p/5735538.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!