zoukankan      html  css  js  c++  java
  • [zz]sqlalchemy使用

    个人总结:

          这个是非常简单易懂的不使用declarative_base的例子,保存一下

    -----------------------------------------------------------我是无情的分割线--------------------------------------------------------------

    应用程序离不开对数据的操作,因为正在计划做一个桌面小程序练手Python,所以开始了Python的数据库操作的学习。

        提到数据库,就不得不提ORM,所谓万物皆对象,正是有了非常方便的ORM工具,才使得编程脱离了繁琐而冗余的“select”操作,把我们的注意力转移到了程序的逻辑上面来。从搜索的口碑看来,SQLAlchemy作为Python下的一款ORM工具的评价是相当不错的。看着SQLAlchemy,让我想起了Hibernate,他们非常像。

        接触了Python,才让我认识了SQLite,才让我抛弃了Access。作为轻量级数据库的应用足足有余。推荐一款GUI下的SQLite管理工具  。

        工具都齐了就开工。

        实现一个简单的对“用户”信息的CRUD操作。首先定义一个”用户“类,文件名为us.py

        class user(object):
    def __init__(self,name,age,password):
    self.name=name
    self.age=age
    self.password=password

        非常简单的一个user类,它必须继承object这个数据类型。有关这个东西的具体机制好像牵扯到”元类“这个概念,我没有深入去研究,总之要想实现ORM,必须要这样写…(先实现了再说)

        来写一个test.py,内容如下(因为程序中有中文,虽然是注释,但也要在第一行加上#coding=gbk,当然#coding=utf也行,但这样一来,中文会被转变成unicode(eclipse下),看也看不懂了澹

    #coding=gbk
     
    from sqlalchemy import *
    from sqlalchemy.orm import *
     
    from us import *
     
    #建立数据库引擎,这里使用的是相对路径,数据库的位置在当前文件的目录下。
     
    db=create_engine('sqlite:///ew.db')
     
    #设置metadata并将其绑定到数据库引擎
     
    metadata = MetaData(db)
     
    #创建metadata,这里的checkfirst参数是检测是否已经建立,能有效的防止错误。
     
    metadata.create_all(checkfirst=True)
     
    #这里使用到了Table函数,这个就是定义数据库里面新建的表啦。表名叫users
     
    users = Table('users', metadata,
    Column('user_id', Integer, primary_key=True),
    Column('name', String(40)),
    Column('age', Integer),
    Column('password', String),
    )
     
    #定义好了,那就执行吧,这样数据库中的users表就被创建了。
     
    users.create(checkfirst=True)
     
    #把user类和数据库中的users表匹配起来,这样user类的各个属性就和users表神奇的搭配起来了
    #这里要注意的是user类的属性和users表的列名要一致哦(好像支持别名的,不过没研究)
     
    mapper(user,users)
     
    #可以这么说,至此ORM的配置已经完成了
    #下面我们就可以直接对user类进行操作,而不必关心后台数据库的具体实现了,全部交给SQLAlchemy处理
    #这里对于数据的传递要用到session这个东东
    #可以把它比喻成一个端盘子的,你只要把东西丢给它,吩咐好干什么就行了。
    #首先创建Session,并将其绑定到数据库引擎,嘿嘿,这个是专门服务与db数据库的Waiter哦。
     
    Session=sessionmaker(bind=db)
    session=Session()
     
    #session准备就绪,来给他吩咐任务吧。定义一个新用户newuser。
     
    newuser=user('Joke',12,'ddd')
     
    #把newuser丢给session
     
    session.add(ed_user)
     
    #执行
     
    session.commit()
     
    #看看数据库有没有添加成功?就这么简单
     
    #来看看查找,修改和删除
    #session.query()括号里面的参数意思是指明查找的对象
    #因为user已经和users表匹配,实际上也就是select * from users
    #后面的filter_by参数的含义也就是where users.age=12
    #明白了ORM带来的好处了吧,真正把对数据的操作变成了一种“享受”
    #first()参数的含义是返回结果集中的第一条数据。
     
    u=session.query(user).filter_by(age=12).first()
     
    #来对查询出来的数据修改一下
     
    u.age=44
     
    #丢给session执行。这里的对象u已经持久化了,直接提交session,自动更新数据。
     
    session.commit()
     
    #看看数据库的数据是不是修改了?
    #再来看删除
     
    u=session.query(user).filter_by(age=44).first()
    session.delete(u)
    session.commit()
    
  • 相关阅读:
    HTML笔记
    html文本格式化
    标题大小与字体大小的关系
    html学习笔记
    冒泡排序
    直接插入算法
    绘制针状图
    绘制矢量图
    饼图pie 或者pie3
    三维直方图
  • 原文地址:https://www.cnblogs.com/zhangzhang/p/2440492.html
Copyright © 2011-2022 走看看