把MySQL表结构映射为Python中的对象的教程


Posted in Python onApril 07, 2015

ORM

mysql的表结构是二维表,用python的数据结构表示出来就是一个列表,每一个记录是一个tuple。如下所示:

[('1', ''huangyi),('2', ''letian),('3', 'xiaosi')]

这一行并不便于看出表的结构,可以把它换成对象的形式。

class User(object):
  def __init__(self, id, name):
    self.id = id
    self.name = name

得到:
 

[ 
User('1', 'huangyi'),
 
User('2', 'letian'),
 
User('3', 'xiaosi')
]

这就是ORM(Object-relational Mapping),把关系数据库的表结构映射到对象上。我们可以用SQLAlchemy框架来进行映射。
SQLAlchemy
 

#!/usr/bin/env python
#-*-coding:utf-8 -*-
 
from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
 
Base = declarative_base()
 
class User(Base):
  __tablename__ = 'user'
  id = Column(String(20), primary_key=True)
  name = Column(String(20))
 
engine = create_engine('mysql+mysqlconnector://root:XXXXX@localhost:3306/TUZHI')
DBSession = sessionmaker(bind=engine)
 
session = DBSession()
new_user = User(id='4', name='Huangyi')
session.add(new_user)
session.commit()
#session.close()
 
##进行查询
#session = DBSession()
user = session.query(User).filter(User.id=='4').one()
print 'type:', type(user)
print 'name:', user.name
session.close()

Python 相关文章推荐
Python 列表list使用介绍
Nov 30 Python
简单介绍Python中的try和finally和with方法
May 05 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
python爬虫使用cookie登录详解
Dec 27 Python
python针对excel的操作技巧
Mar 13 Python
pandas数据分组和聚合操作方法
Apr 11 Python
python读取文本中的坐标方法
Oct 14 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
python 调试冷知识(小结)
Nov 11 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
python-视频分帧&多帧合成视频实例
Dec 10 Python
python内置模块之上下文管理contextlib
Jun 14 Python
在RedHat系Linux上部署Python的Celery框架的教程
Apr 07 #Python
详解Python3.1版本带来的核心变化
Apr 07 #Python
初学Python函数的笔记整理
Apr 07 #Python
利用Python绘制数据的瀑布图的教程
Apr 07 #Python
浅析Python中的多进程与多线程的使用
Apr 07 #Python
Python多线程编程(八):使用Event实现线程间通信
Apr 05 #Python
Python多线程编程(七):使用Condition实现复杂同步
Apr 05 #Python
You might like
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
基于mysql的论坛(7)
2006/10/09 PHP
PHP函数学习之PHP函数点评
2012/07/05 PHP
PHP echo,print,printf,sprintf函数之间的区别与用法详解
2013/11/27 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
2013/12/02 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
php单例模式示例分享
2015/02/12 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
php+MySQL实现登录时验证登录名和密码是否正确
2016/05/10 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
js中判断控件是否存在
2010/08/25 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
javascript实现倒计时跳转页面
2016/01/17 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
JS滚轮控制图片缩放大小和拖动的实例代码
2018/11/20 Javascript
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
vue 项目build错误异常的解决方法
2019/04/22 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
vue如何使用rem适配
2021/02/06 Vue.js
简单介绍Python中的几种数据类型
2016/01/02 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
python算法表示概念扫盲教程
2017/04/13 Python
详谈Pandas中iloc和loc以及ix的区别
2018/06/08 Python
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
外企求职信范文分享
2013/12/31 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
专业见习报告范文
2014/11/03 职场文书
本溪关门山导游词
2015/02/09 职场文书
夏洛特的网观后感
2015/06/15 职场文书
关于springboot 配置date字段返回时间戳的问题
2021/07/25 Java/Android