学习 python ORM 类库 SQLAlchemy 使用

具体ORM的详细说明可以看 这里http://baike.baidu.com/view/197951.htm

ORM方法论基于三个核心原则:

简单:以最基本的形式建模数据。

传达性:数据库结构被任何人都能理解的语言文档化。

精确性:基于数据模型创建正确标准化了的结构。

 

现在来看看SQLAlchemy使用方法

1、连接数据库create_engine()

   如我连接的是mysql数据库

   

db_config = {
    'host': 'xxx.xxx.xxx.xx',
    'user': 'root',
    'passwd': 'xxxxxxxx',
    'db':'test',
    'charset':'utf8'
}

engine = create_engine('mysql://%s:%s@%s/%s?charset=%s'%(db_config['user'],
                                                         db_config['passwd'],
                                                         db_config['host'],
                                                         db_config['db'],
                                                         db_config['charset']), echo=True)

2、字段和数据类型及操作方法

  在sqlalchemy.schema包里有数据库关系的描述,列举几个最常用的:

   字段:Column

   索引:Index

   表:Table

   数据类型在sqlalchemy.types包,列举几个最常用的:

   二进制:BIGINT

   布尔:BOOLEAN

   字符:CHAR

   可变字符:VARCHAR

   日期:DATETIME

   操作方法在sqlalchemy.sql包里,列举几个最常用的:

   execute,update,insert,select,delete,join等

 

3、创建表结构

   例:创建名为users的表,有四个字段:id,name,fullname,password

   String在mysql里其实就是varchar

metadata = MetaData()
users_table = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String(50)),
    Column('fullname', String(50)),
    Column('password', String(100))
)
metadata.create_all(engine)

 

4、创建映射关系

 

1 from sqlalchemy.orm import mapper
2 metadata = MetaData(engine)
3 users_table = Table('users', metadata, autoload=True)
4 print users_table.columns

5、插入并显示数据

1 insert =  users_table.insert()
2 insert.execute(name='leon', fullname='leon liang', password='leon123')
3 mapper(User, users_table)
4 
5 ed_user=User('crackpot','Crackpot','password')
6 print 'username:', ed_user.name
7 print 'fullname:', ed_user.fullname
8 print 'password:', ed_user.password
9 print 'id:', str(ed_user.id)

到此为止,一个简单的最基础的操作SQLAlchemy 学习结束了,使用ORM,可以让程序员更多的去关注实现逻辑而不用花太多时间去写SQL语句,可能使用项目代码更规范,多个协同开发时更能体现这点好处,而且直接写SQL语句也容易出错,大中型的项目推荐使用ORM。

  

posted @ 2012-11-24 12:54  践道者  阅读(21547)  评论(1编辑  收藏  举报