把MySQL表结构映射为Python中的对象的教程

yipeiwu_com7年前Python基础

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中字符串的修改及传参详解

发现问题 最近在面试的时候遇到一个题目,选择用JavaScript或者Python实现字符串反转,我选择了Python,然后写出了代码(错误的): #!/usr/bin/env py...

Python类的用法实例浅析

本文实例讲述了Python类的用法。分享给大家供大家参考。具体如下: 先看一段代码: #!/usr/bin/env python class Test: def __init__...

python实现倒计时的示例

复制代码 代码如下:import timecount = 0 a = input('time:') b = a * 60 while (count <...

python编程开发之textwrap文本样式处理技巧

本文实例讲述了python编程开发之textwrap文本样式处理技巧。分享给大家供大家参考,具体如下: 在看python的API的时候,发现python的textwrap在处理字符串样式...

python 基于dlib库的人脸检测的实现

python 基于dlib库的人脸检测的实现

本周暂时比较清闲,可以保持每日一更的速度。 国外身份证项目新增需求,检测出身份证正面的人脸。最开始考虑mobilenet-ssd,经同事提醒,有现成的人脸库dlib,那就用传统方法尝试一...