把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解析XML的几种方式
Feb 16 Python
浅谈python 四种数值类型(int,long,float,complex)
Jun 08 Python
python实现校园网自动登录的示例讲解
Apr 22 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
Python日期时间Time模块实例详解
Apr 15 Python
Python Numpy 实现交换两行和两列的方法
Jun 26 Python
numpy.ndarray 实现对特定行或列取值
Dec 05 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
Jun 08 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 Python
如何获取numpy array前N个最大值
May 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
《魔兽争霸3:重制版》更新 多项视觉效果调整
2020/05/04 魔兽争霸
php分页函数
2006/07/08 PHP
php5.2时间相差8小时
2007/01/15 PHP
PHPMYADMIN 简明安装教程 推荐
2010/03/07 PHP
PHP中用hash实现的数组
2011/07/17 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
Codeigniter检测表单post数据的方法
2015/03/21 PHP
PHP Smarty模版简单使用方法
2016/03/30 PHP
使用JS操作页面表格,元素的一些技巧
2007/02/02 Javascript
THREE.JS入门教程(4)创建粒子系统
2013/01/24 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jQuery实现ajax的叠加和停止(终止ajax请求)
2016/08/08 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
jquery 验证用户名是否重复代码实例
2019/05/14 jQuery
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
Python过滤函数filter()使用自定义函数过滤序列实例
2014/08/26 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
Python实现密码薄文件读写操作
2019/12/16 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python3 xpath和requests应用详解
2020/03/06 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
《曹刿论战》教学反思
2014/03/02 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
春季运动会加油词
2015/07/18 职场文书
CSS3 实现的图片悬停的切换按钮
2021/04/13 HTML / CSS
为Java项目添加Redis缓存的方法
2021/05/18 Redis
Python使用openpyxl批量处理数据
2021/06/23 Python
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
MySQL数据库优化之通过索引解决SQL性能问题
2022/04/10 MySQL