把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实现DNS正向查询、反向查询的例子
Apr 25 Python
python类继承用法实例分析
May 27 Python
详解Python的Django框架中的中间件
Jul 24 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Python字典的核心底层原理讲解
Jan 24 Python
Python多进程multiprocessing、进程池用法实例分析
Mar 24 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
DataFrame 数据合并实现(merge,join,concat)
Jun 14 Python
Python修改DBF文件指定列
Dec 19 Python
python palywright库基本使用
Jan 21 Python
python 如何在list中找Topk的数值和索引
May 20 Python
Python实现生成bmp图像的方法
Jun 13 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
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
ThinkPHP实现跨模块调用操作方法概述
2014/06/20 PHP
PHP静态文件生成类实例
2014/11/29 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
微信小程序使用audio组件播放音乐功能示例【附源码下载】
2017/12/08 Javascript
Angular中innerHTML标签的样式不起作用的原因解析
2019/06/18 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[04:02]DOTA2上海特锦赛小组赛第二日recap精彩回顾
2016/02/28 DOTA
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
Python爬虫DNS解析缓存方法实例分析
2017/06/02 Python
django foreignkey(外键)的实现
2019/07/29 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
Python中IP地址处理IPy模块的方法
2019/08/16 Python
python检测服务器端口代码实例
2019/08/31 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
Django操作session 的方法
2020/03/09 Python
快速解决jupyter启动卡死的问题
2020/04/10 Python
Keras中的多分类损失函数用法categorical_crossentropy
2020/06/11 Python
python使用建议技巧分享(三)
2020/08/18 Python
浅析HTML5页面元素及属性
2021/01/20 HTML / CSS
德国家用电器购物网站:Premiumshop24
2019/08/22 全球购物
优秀学生干部个人的自我评价
2013/10/04 职场文书
商场经理竞聘演讲稿
2014/01/01 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
园林专业毕业生自荐信
2014/07/04 职场文书
2014年党课学习心得体会
2014/07/08 职场文书
亮剑观后感500字
2015/06/05 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python
GO中sync包自由控制并发示例详解
2022/08/05 Golang