把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 argv用法详解
Jan 08 Python
使用python编写简单的小程序编译成exe跑在win10上
Jan 15 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
python实现随机梯度下降法
Mar 24 Python
python随机在一张图像上截取任意大小图片的方法
Jan 24 Python
python pandas 时间日期的处理实现
Jul 30 Python
Python生成个性签名图片获取GUI过程解析
Dec 16 Python
Python接口测试结果集实现封装比较
May 01 Python
Python新手如何理解循环加载模块
May 29 Python
TensorFlow中如何确定张量的形状实例
Jun 23 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
Python合并多张图片成PDF
Jun 09 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
探讨PHP使用eAccelerator的API开发详解
2013/06/09 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
Javascript 解疑
2009/11/11 Javascript
jquery form 加载数据示例
2014/04/21 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
JavaScript实现网页加载进度条代码超简单
2015/09/21 Javascript
模仿password输入框的实现代码
2016/06/07 Javascript
jQuery3.0中的buildFragment私有函数详解
2016/08/16 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
JavaScript中setTimeout的那些事儿
2016/11/14 Javascript
利用jquery正则表达式在页面验证url网址输入是否正确
2017/04/04 jQuery
node.js支持多用户web终端实现及安全方案
2017/11/29 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
python中正则表达式的使用方法
2018/02/25 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
python安装pywin32clipboard的操作方法
2019/01/24 Python
python函数局部变量、全局变量、递归知识点总结
2019/11/15 Python
windows下Pycharm安装opencv的多种方法
2020/03/05 Python
html5实现滑块功能之type="range"属性
2020/02/18 HTML / CSS
一些网络技术方面的面试题
2014/05/01 面试题
AJAX的全称是什么
2012/11/06 面试题
《充气雨衣》教学反思
2014/04/07 职场文书
无偿献血倡议书
2014/04/14 职场文书
生态养殖创业计划书
2014/05/06 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
Windows环境下实现批量执行Sql文件
2021/10/05 SQL Server
Vue全局事件总线你了解吗
2022/02/24 Vue.js
python疲劳驾驶困倦低头检测功能的实现
2022/04/04 Python
浅谈Redis变慢的原因及排查方法
2022/06/21 Redis