把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数据结构之二叉树的统计与转换实例
Apr 29 Python
自己使用总结Python程序代码片段
Jun 02 Python
浅谈python数据类型及类型转换
Dec 18 Python
Python字典及字典基本操作方法详解
Jan 30 Python
分析经典Python开发工程师面试题
Apr 08 Python
pybind11在Windows下的使用教程
Jul 04 Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
python实现梯度下降算法的实例详解
Aug 17 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
Pytorch使用shuffle打乱数据的操作
May 20 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新手上路(九)
2006/10/09 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
php将字符串转化成date存入数据库的两种方式
2014/04/28 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
js或css实现滚动广告的几种方案
2010/01/28 Javascript
js setTimeout()函数介绍及应用以倒计时为例
2013/12/12 Javascript
jquery和雅虎的yql服务实现天气预报服务示例
2014/02/08 Javascript
JavaScript表单通过正则表达式验证电话号码
2014/03/14 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
详解前端路由实现与react-router使用姿势
2017/08/07 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
[01:25]DOTA2超级联赛专访iG 将调整状态找回自己
2013/06/05 DOTA
使用python Django做网页
2013/11/04 Python
Python正则表达式教程之二:捕获篇
2017/03/02 Python
python读取二进制mnist实例详解
2017/05/31 Python
高质量Python代码编写的5个优化技巧
2017/11/16 Python
python根据txt文本批量创建文件夹
2020/12/08 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
使用 CSS3 中@media 实现网页自适应的示例代码
2020/03/24 HTML / CSS
世界上最受欢迎的花店:1-800-Flowers.com
2020/06/01 全球购物
法律专业个人实习自我鉴定
2013/09/23 职场文书
市场营销专业毕业生自荐信
2013/11/02 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
我爱祖国演讲稿
2014/09/02 职场文书
《法国号》教学反思
2016/02/22 职场文书
AI:如何训练机器学习的模型
2021/04/16 Python
python3 字符串str和bytes相互转换
2022/03/23 Python