Python3.x:SQLAlchemy操作数据库,,Python3.x:


Python3.x:SQLAlchemy操作数据库

前言

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

SQLAlchemy库安装

pip install sqlalchemy#安装mysqlpip 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_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_baseimport 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:[email protected]: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操作数据库

评论关闭