把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中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
Python随机生成数模块random使用实例
Apr 13 Python
详解python使用递归、尾递归、循环三种方式实现斐波那契数列
Jan 16 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
对python添加模块路径的三种方法总结
Oct 16 Python
Flask框架工厂函数用法实例分析
May 25 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
python同步两个文件夹下的内容
Aug 29 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
Python 线性回归分析以及评价指标详解
Apr 02 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数据缓存技术
2007/02/14 PHP
让PHP支持页面回退的两种方法
2008/01/10 PHP
php下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
与文件上传有关的php配置参数总结
2013/06/14 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
浅析memcache启动以及telnet命令详解
2013/06/28 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
2014/06/23 PHP
PHP类的反射用法实例
2014/11/03 PHP
PHP实现163邮箱自动发送邮件
2016/03/29 PHP
IE和Firefox下javascript的兼容写法小结
2008/12/10 Javascript
js左右弹性滚动对联广告代码分享
2014/02/19 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
JavaScript DOM常用操作代码汇总
2020/07/03 Javascript
详解vue v-model
2020/08/31 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
Python 条件判断的缩写方法
2008/09/06 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python弹出输入框并获取输入值的实例
2019/06/18 Python
深入学习python多线程与GIL
2019/08/26 Python
基于Python+Appium实现京东双十一自动领金币功能
2019/10/31 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
python实现登录与注册系统
2020/11/30 Python
英国文胸专家:AmpleBosom.com
2018/02/06 全球购物
StubHub新西兰:购买和出售你的门票
2019/04/22 全球购物
建筑管理专业求职信
2014/07/28 职场文书
岗位说明书标准范本
2014/07/30 职场文书
导游词之镇江焦山
2019/11/21 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL