[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()

你可能感兴趣的:(sql)