xsmile
You can fly higher
xsmile's Blog
Python之数据库操作

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

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

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

工具都齐了就开工。

实现一个简单的对“用户”信息的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()

    #OK,一切就是这么简单
首页      技术      Python      Python之数据库操作

发表回复

textsms
account_circle
email

xsmile's Blog

Python之数据库操作
应用程序离不开对数据的操作,因为正在计划做一个桌面小程序练手Python,所以开始了Python的数据库操作的学习。 提到数据库,就不得不提ORM,所谓万物皆对象,正是有了非常方便的ORM工具…
扫描二维码继续阅读
2008-11-02