把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基于numpy灵活定义神经网络结构的方法
Aug 19 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
Dec 15 Python
Python反射的用法实例分析
Feb 11 Python
Python3中的json模块使用详解
May 05 Python
python事件驱动event实现详解
Nov 21 Python
python实现多层感知器
Jan 18 Python
Python函数返回不定数量的值方法
Jan 22 Python
对Python3中dict.keys()转换成list类型的方法详解
Feb 03 Python
Python 实现try重新执行
Dec 21 Python
Python读取二进制文件代码方法解析
Jun 22 Python
python爬虫scrapy基于CrawlSpider类的全站数据爬取示例解析
Feb 20 Python
python中的random模块和相关函数详解
Apr 22 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
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
php面象对象数据库操作类实例
2014/12/02 PHP
php实现头像上传预览功能
2017/04/27 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
window.location.href中url中数据量太大时的解决方法
2013/12/23 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
2014/04/18 Javascript
JavaScript实现点击按钮切换网页背景色的方法
2015/10/17 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
jQuery插件echarts实现的循环生成图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
[37:47]IG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python实现的圆形绘制(画圆)示例
2018/01/31 Python
python实现自动网页截图并裁剪图片
2018/07/30 Python
tensorflow学习教程之文本分类详析
2018/08/07 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
对django中foreignkey的简单使用详解
2019/07/28 Python
Django models filter筛选条件详解
2020/03/16 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
Python 基于jwt实现认证机制流程解析
2020/06/22 Python
CSS3制作炫酷的下拉菜单及弹起式选单的实例分享
2016/05/17 HTML / CSS
全球知名鞋履品牌授权零售商:Journeys
2016/09/17 全球购物
学习委员自我鉴定
2014/01/13 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
民警群众路线教育实践活动对照检查材料
2014/10/04 职场文书
Jackson 反序列化时实现大小写不敏感设置
2021/06/29 Java/Android
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
MySQL分布式恢复进阶
2022/07/23 MySQL