把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 13 Python
python使用logging模块发送邮件代码示例
Jan 18 Python
django1.11.1 models 数据库同步方法
May 30 Python
删除python pandas.DataFrame 的多重index实例
Jun 08 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
Python 使用 environs 库定义环境变量的方法
Feb 25 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
如何用Python绘制3D柱形图
Sep 16 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 Python
Django中session进行权限管理的使用
Jul 09 Python
Python编程源码报错解决方法总结经验分享
Oct 05 Python
python文件与路径操作神器 pathlib
Apr 01 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
一些花式咖啡的配方
2021/03/03 冲泡冲煮
在SAE上搭建最新wordpress的方法
2014/12/21 PHP
分享50个提高PHP执行效率的技巧
2015/12/26 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
js函数中onmousedown和onclick的区别和联系探讨
2013/05/19 Javascript
给Flash加一个超链接(推荐使用透明层)兼容主流浏览器
2013/06/09 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
javascript实现浏览器窗口传递参数的方法
2014/09/03 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
在AngularJS中使用jQuery的zTree插件的方法
2016/04/21 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
jQuery创建及操作xml格式数据示例
2018/05/26 jQuery
vue实现简单loading进度条
2018/06/06 Javascript
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
Vue $emit $refs子父组件间方法的调用实例
2018/09/12 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
讲解Python中for循环下的索引变量的作用域
2015/04/15 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
Python WXPY实现微信监控报警功能的代码
2017/10/20 Python
在python中实现对list求和及求积
2018/11/14 Python
Dodax奥地利:音乐、电影、书籍、玩具、电子产品等
2019/08/31 全球购物
.NET面试10题
2014/02/24 面试题
经典优秀个人求职自荐信格式
2013/09/25 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
民间借贷协议书范本
2014/10/01 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
公司备用金管理制度
2015/08/04 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS