把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合并两个字典的常用方法与效率比较
Jun 17 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
python生成tensorflow输入输出的图像格式的方法
Feb 12 Python
python 处理数字,把大于上限的数字置零实现方法
Jan 28 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
使用Python+selenium实现第一个自动化测试脚本
Mar 17 Python
jenkins+python自动化测试持续集成教程
May 12 Python
keras K.function获取某层的输出操作
Jun 29 Python
Python预测2020高考分数和录取情况
Jul 08 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
总结几个非常实用的Python库
Jun 26 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 批量删除 sql语句
2009/06/05 PHP
在PHP中实现Javascript的escape()函数代码
2010/08/08 PHP
php流量统计功能的实现代码
2012/09/29 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
使用php清除bom示例
2014/03/03 PHP
php对文件进行hash运算的方法
2015/04/03 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
javascript 自定义事件初探
2009/08/21 Javascript
javascript中的Base64、UTF8编码与解码详解
2015/03/18 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
Vue插件之滑动验证码
2019/09/21 Javascript
JavaScript Array对象使用方法解析
2019/09/24 Javascript
axios如何取消重复无用的请求详解
2019/12/15 Javascript
Quasar Input:type="number" 去掉上下小箭头 实现加减按钮样式功能
2020/04/09 Javascript
使用element-ui +Vue 解决 table 里包含表单验证的问题
2020/07/17 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
python使用PIL和matplotlib获取图片像素点并合并解析
2019/09/10 Python
pygame实现成语填空游戏
2019/10/29 Python
Ruby如何实现动态方法调用
2012/11/18 面试题
小学生打架检讨书
2014/01/26 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
奠基仪式致辞
2015/07/30 职场文书
大学新生入学感想
2015/08/07 职场文书
初一英语教学反思
2016/02/15 职场文书
mysql的单列多值存储实例详解
2022/04/05 MySQL
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS