sqlachemy 是python中关于sql的ORM,他的存在可以消除底层sql引擎的差异,同事也避免了复杂繁琐的sql语句,因此我们在比较大的应用时常使用它,下面是我写的一个例子

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
from sqlalchemy.orm import mapper, sessionmaker
__author__ = 'lige' from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
from sqlalchemy.sql.expression import Cast
from sqlalchemy.ext.compiler import compiles
from sqlalchemy.dialects.mysql import \
BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, DATE, \
DATETIME, DECIMAL, DECIMAL, DOUBLE, ENUM, FLOAT, INTEGER, \
LONGBLOB, LONGTEXT, MEDIUMBLOB, MEDIUMINT, MEDIUMTEXT, NCHAR, \
NUMERIC, NVARCHAR, REAL, SET, SMALLINT, TEXT, TIME, TIMESTAMP, \
TINYBLOB, TINYINT, TINYTEXT, VARBINARY, VARCHAR, YEAR #表的属性描述对象
metadata = MetaData()
userTable = Table(
"wzp_user",metadata,
Column('user_id', Integer, primary_key=True),
Column('user_name', VARCHAR(50), unique=True, nullable=False),
Column('password', VARCHAR(40), nullable=True)
)
#创建数据库连接,MySQLdb连接方式
mysql_db = create_engine('mysql://用户名:密码@ip:port/dbname')
#创建数据库连接,使用 mysql-connector-python连接方式
#mysql_db = create_engine("mysql+mysqlconnector://用户名:密码@ip:port/dbname")
#生成表
metadata.create_all(mysql_db) #创建一个映射类
class User(object):
pass
#把表映射到类
mapper(User, userTable)
#创建了一个自定义了的 Session类
Session = sessionmaker()
#将创建的数据库连接关联到这个session
Session.configure(bind=mysql_db)
session = Session() def main():
u = User()
#给映射类添加以下必要的属性,因为上面创建表指定这个字段不能为空,且唯一
u.user_name='tan9le测试'
#按照上面创建表的相关代码,这个字段允许为空
u.password='123456'
#在session中添加内容
session.add(u)
#保存数据
session.flush()
#数据库事务的提交,sisson自动过期而不需要关闭
session.commit() #query() 简单的理解就是select() 的支持 ORM 的替代方法,可以接受任意组合的 class/column 表达式
query = session.query(User)
#列出所有user
print list(query)
#根据主键显示
print query.get(1)
#类似于SQL的where,打印其中的第一个
print query.filter_by(user_name='tan9le测试').first()
u = query.filter_by(user_name='tan9le测试').first()
#修改其密码字段
u.password = '654321'
#提交事务
session.commit()
#打印会出现新密码
print query.get(1).password
#根据id字段排序,打印其中的用户名和密码
for instance in session.query(User).order_by(User.user_id):
print instance.user_name, instance.password
#释放资源
session.close() query 请求的是对象,没有属性,只有其实例才有属性 if __name__ == '__main__':
main()

他的思路很简单,首先创建meta,和表映射,然后meta和库映射,最后创建类object,和表映射,这样我们只需要使用类以及和库相关连的session来访问所需要的表的字段

最新文章

  1. asp.net GDI+ 绘制椭圆 ,弧线,扇形
  2. Python定时任务框架APScheduler 3.0.3 Cron示例
  3. 语义化HTML
  4. MysqlDumpslow
  5. React,js实现分页的案列
  6. webForm练习1(地区导航)
  7. python Django 学习笔记(二)—— 一个简单的网页
  8. VirtualBox中centos网络配置
  9. PHPMailer发匿名邮件及Extension missing: openssl的解决
  10. 初学HTML5的一点理解
  11. R语言-主成分分析
  12. 新增职责 不能从IE进入的问题 此责任无可用函数 (转)
  13. 在react中使用less(官方做法)
  14. .net reactor使用教程(一)——界面各功能说明(转)
  15. Centos7.2下OpenVPN 环境完整部署记录
  16. win7(64bit)+python3.5+pyinstaller3.2安装和测试
  17. FluentScheduler:开源轻量级定时任务调度架构
  18. ElasticSearch索引
  19. spring mvc 文档哪里有
  20. Mybatis之reflection包源代码解析(一)

热门文章

  1. 俄罗斯方块:Python实现
  2. 虚拟机LUN扩大后,重新分区
  3. HDU2196-Computer
  4. 寻访上海西服定制店_Enjoy·雅趣频道_财新网
  5. Java 反射机制详解
  6. Java学习笔记(1)——基本数据类型
  7. Wix - 教程
  8. Jquery css函数用法(判断标签是否拥有某属性)
  9. (转)How to renew your Apple Push Notification Push SSL Certificate
  10. C#使用jmail组件发送邮件