博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python操作三大主流数据库(3)python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用...
阅读量:6958 次
发布时间:2019-06-27

本文共 4100 字,大约阅读时间需要 13 分钟。

python操作mysql③python操作mysql的orm工具sqlaichemy安装配置和使用手册地址:http://docs.sqlalchemy.org/en/rel_1_1/orm/index.html安装D:\software\source_tar>pip install SQLALchemy检测是否安装成功D:\software\source_tar>pythonPython 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> import sqlalchemymysql的orm库SQLALchemy的操作#coding:utf-8from sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column, Integer, String, DateTime, Booleanfrom sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmaker'''    id int primary key auto_increment,    title varchar(200) not null,    content varchar(2000) not null,    tpes varchar(10) not null,    image varchar(300) null,    author varchar(20) null,    view_count int default 0,    created_at datetime null,    is_valid smallint default 1'''# 创建对象的基类Base = declarative_base()# 初始化数据库连接,注意要接上charset=utf8否则中文无法支持engine = create_engine("mysql://root:@localhost/news?charset=utf8")# 创建DBSession类型DBSession = sessionmaker(bind=engine)# 定义News对象class News(Base):    __tablename__ = 'news'    id = Column(Integer, primary_key=True)    title = Column(String(200), nullable=False)    content = Column(String(2000), nullable=False)    types = Column(String(10), nullable=False)    image = Column(String(300),)    author = Column(String(20),)    view_count = Column(Integer)    created_at = Column(DateTime)    is_valid = Column(Boolean)'''# 简单测试# 如果表不存在就创建表Base.metadata.create_all(engine)# 创建session对象:session = DBSession()# 创建新User对象,新增一条测试数据news01 = News(title='标题1', content = 'content01', types = 'baidu',     image = '/static/img/01.jpg', author = 'jack', view_count = 3)# 添加到session:session.add(news01)# 提交即保存到数据库:session.commit()# 关闭session:session.close()'''# orm的测试类class OrmTest(object):    # 初始化创建session    def __init__(self):        self.session = DBSession()    # 添加数据    def add_one(self):        new_obj = News(            title = '标题20180202',            content = '内容20180202',            types = '百家'            )        self.session.add(new_obj)        self.session.commit()        return new_obj    # 添加多条数据    def add_more(self):        add_list = []        for i in range(10):            new_obj = News(title='标题%s'%str(i),content='内容%s'%str(i),types='百家%s'%str(i))            self.session.add(new_obj)            add_list.append(new_obj)        self.session.commit()        return add_list    # 删除数据    def delete_data(self):        data = self.session.query(News).get(51)        self.session.delete(data)        self.session.commit()    # 修改单条数据    def update_one(self, _id):        obj = self.session.query(News).get(_id)        if obj:            obj.is_valid = 0            self.session.add(obj)            self.session.commit()            return True        return False    # 修改多条数据    def update_data(self):        # filter_by的使用方法        # data_list = self.session.query(News).filter_by(is_valid = 0)        # filter的使用方法        data_list = self.session.query(News).filter(News.id > 45)        for data in data_list:            print(data.title)            data.is_valid = 1            self.session.add(data)        self.session.commit()    # 获取一条数据    def get_one(self):        return self.session.query(News).get(1)    # 获取多条数据    def get_more(self):        return self.session.query(News).filter_by(is_valid = 1)def main():    obj = OrmTest()    # rst = obj.add_one()    # print('id:%s, title:%s,content:%s,types = %s' % (rst.id,rst.title,rst.content,rst.types))    # 添加多条数据    # rst = obj.add_more()    # for _new in rst:    #     print('id:{0},title{1},content:{2}'.format(_new.id,_new.title,_new.content))    # 测试删除    # obj.delete_data()    # 修改单条数据    # print(obj.update_one(50))    # 修改多条数据    obj.update_data()    # 测试获取一条数据的函数    # rst = obj.get_one()    # print(rst.title)    # 获取多条数据    # rst = obj.get_more()    # for _news in rst:    #     print('news id: %s, title:%s, content:%s' % (_news.id,_news.title,_news.content))if __name__ == "__main__":    main()

 

转载于:https://www.cnblogs.com/reblue520/p/8406468.html

你可能感兴趣的文章
Graphical installers are not supported by the VM解决办法
查看>>
我的大学之路---2012在迷雾中前进
查看>>
小学生都能看懂的表达式计算(图解)
查看>>
物联网有没有创新的思维模式?如果有,会是什么?
查看>>
微会动微信现场互动:年会策划之用产品思维搞定年会
查看>>
利用STP生成树协议实现负载均衡
查看>>
给定一个串,去掉连续的重复字母,
查看>>
我的友情链接
查看>>
MSR2010配置小记
查看>>
微信video标签全屏无法退出bug
查看>>
[转]PostgreSQL 中文资料汇总
查看>>
那些被疯狂追求的女孩,后来怎么样了?
查看>>
(转载)Windows 7 Ultimate(旗舰版)SP1 32/64位官方原版下载(2011年5月12日更新版)...
查看>>
孟岩:通证(token)和通证经济的目的在于改善现有经济的效率性
查看>>
杜鹃演绎奢华春装大片
查看>>
mongoDb
查看>>
HTML框架1
查看>>
servlet:启动的时机
查看>>
笔记:2016-06-23
查看>>
5.22心得
查看>>