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

Python3.x:SQLAlchemy操作数据库

时间:2018-01-28 12:46:41      阅读:1063      评论:0      收藏:0      [点我收藏+]

标签:for   连接   返回   query   host   实现   python3   root   lan   

Python3.x:SQLAlchemy操作数据库

前言

SQLAlchemy是一个ORM框架(Object Rational Mapping,对象关系映射),它可以帮助我们更加优雅、更加高效的实现数据库操作,而且还不限于mysql。

SQLAlchemy库安装

pip install sqlalchemy
#安装mysql
pip install pymysql
#安装mysql-connector2.2.3版本会报错:Unable to find Protobuf include directory.
#所以我们指定安装的版本
pip install mysql-connector==2.1.4

示例代码(mysql数据库)

# python3
# author lizm
# datetime 2018-01-28 12:00:00
‘‘‘
    Demo:sqlalchemy对mysql数据库的操作
‘‘‘
from sqlalchemy import Column,Integer, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
import pymysql

# 创建对象的基类:
Base = declarative_base()

# 定义Channel对象:
class Channel(Base):

    # 表名
    __tablename__ = playback

    # 表结构
    # Column:行声明,可指定主键 Integer:数据类型 String:数据类型,可指定长度 
    id = Column(Integer,primary_key=True,autoincrement=True)
    channel_name = Column(String(45),unique=True, nullable=False)
    address = Column(String(80),unique=True, nullable=False)
    service_name = Column(String(45),unique=True, nullable=False)

    def __init__(self,id,channel_name,address,service_name):
        self.id = id
        self.channel_name = channel_name
        self.address = address
        self.service_name = service_name

# 初始化数据库连接,
# 传入参数:数据库类型+连接库+用户名+密码+主机,字符编码,是否打印建表细节
engine = create_engine(mysql+mysqlconnector://root:lizm@localhost:3306/pythondb,encoding=utf-8)

# 创建表
Base.metadata.create_all(engine)

# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)

session = DBSession()

# 增操作
item1 = Channel(id=1,channel_name=cctv8,address=http://10.10.10.1/cctv8,service_name=news)
session.add(item1)

item2 = Channel(id=2,channel_name=cctv10,address=http://10.10.10.1/cctv10,service_name=sports)
session.add(item2)

item3 = Channel(id=3,channel_name=cctv12,address=http://10.10.10.1/cctv12,service_name=economics)
session.add(item3)
#提交数据
session.commit()
#关闭
session.close()

# 查操作
session1 = DBSession()

# 输出sql 语句
print("查询sql语句:%s"%session1.query(Channel).filter(Channel.id < 3))
# 返回的是一个类似列表的对象
channel = session1.query(Channel).filter(Channel.id < 3).all()

for i in range(len(channel)):
    print(channel[i].id)
    print(channel[i].channel_name)
    print(channel[i].address)
    print(channel[i].service_name)
session1.close()

# 改操作
session2 = DBSession()
session2.query(Channel).filter(Channel.id == 2).update({Channel.service_name: movie}, synchronize_session=False)
session2.commit()
session2.close()

## 查看修改结果
session3 = DBSession()
print(session3.query(Channel).filter(Channel.id == 2).one().service_name)
session3.close()

# 删操作
session4 = DBSession()
session4.query(Channel).filter(Channel.id == 3).delete()
session4.commit()
session4.close()

 

作者:整合侠
链接:http://www.cnblogs.com/lizm166/p/8370633.html
来源:博客园
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

Python3.x:SQLAlchemy操作数据库

标签:for   连接   返回   query   host   实现   python3   root   lan   

原文地址:https://www.cnblogs.com/lizm166/p/8370633.html

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