python ORM

原创 2016年06月01日 13:02:30
python下的orm基本操作(1)--Mysql下的CRUD简单操作(含源码DEMO)

  系统centos

       refer:http://docs.sqlalchemy.org/en/latest/orm/tutorial.html

〇,先讲自己碰到的问题

1,安装了mysql-server,python,等环境

2.很重要的一个问题:我的mysql没有安装mysql-devel!!!!!!!!这导致了后面若干个问题!!!!这个是mysql的包管理工具。

2.安装mysql-python:

这个是我手动安装的,开始yum安装因为mysql-devel没有安装一直有问题。手动安装步骤

1.下载tar.gz包:用gunzip解压出tar包,然后用tar xvf解压。

2.然后进入目录,python2 setup.py build            python2 setup.py install就可以了。

3.安装sqlalchemy也是手动下载包安装的。

4.下面就是安装此文中代码部分实现的了。

 

一,准备环境

 

       1.安装mysql-server (在此之前请准备好Python的环境)

       2.安装mysql-python

centos:yum install sqlalchemy -y 

       3.安装sqlalchemy 

准备环境OK之后,安装sqlalchemy


总是出现No module named MySQLdb这个错误:后来通过错误提示信息查到是因为:mysql少安装了(yum install mysql-devel)这个是mysql的管理安装包。



这个yum安装总是失败,就去官网下载的文件,解压安装了。

 

参考的解决方案:http://stackoverflow.com/questions/1972259/cannot-open-include-file-config-win-h-no-such-file-or-directory-while-inst

环境都准备OK之后,我们来大致看一下如何使用sqlalchemy 的ORM

 

二,实际操作

1 创建engine对象

  这里,engine类似我们的连接字符串,它指示了你会连接到哪种类型的数据库,用户名,密码,地址等,这里,我示例的是mysql数据库,

# -*- coding: UTF-8 -*-

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker

engine = create_engine('mysql://root:password@127.0.0.1:3306/test?charset=utf8',echo=True)

关于其它类型的数据库的连接字符串的写法,参考:

http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html#sqlalchemy.create_engine

 

2.定义映射关系

#declare a Mapping,this is the class describe map to table column
Base = declarative_base()

 

3.定义连接管理器

#connect session to active the action
Session = sessionmaker(bind=engine)
session = Session()

 

4.表结构与类结构映射

class Person(Base):
    __tablename__ = 'Person'
    Id = Column(Integer, primary_key=True,autoincrement=True)
    Pname = Column(String,nullable=False,default='')
    Address = Column(String,nullable=False,default='')
    Age = Column(Integer,nullable=False,default=0)

    def __repr__(self):
        return 'the info is ID %s Pname is %s Address is %s and Age is %s' % \
        (self.Id, self.Pname, self.Address,  self.Age)

 

根据以上的代码,就可以完整的操作Mysql了,完整的代码如下:

# -*- coding: UTF-8 -*-

__author__ = 'Bruce'
from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

#declare the connecting to the server
engine = create_engine('mysql://account:password@127.0.0.1:3306/test?charset=utf8',echo=False)

#declare a Mapping,this is the class describe map to table column
Base = declarative_base()

#connect session to active the action
Session = sessionmaker(bind=engine)
session = Session()

class Person(Base):
    __tablename__ = 'Person'
    Id = Column(Integer, primary_key=True,autoincrement=True)
    Pname = Column(String,nullable=False,default='')
    Address = Column(String,nullable=False,default='')
    Age = Column(Integer,nullable=False,default=0)

    def __repr__(self):
        return 'the info is ID %s Pname is %s Address is %s and Age is %s' % \
        (self.Id, self.Pname, self.Address,  self.Age)

if __name__ == '__main__':
    #add one
    p = Person(Pname='bruce', Address='beijing', Age=22)
    session.add(p)
    session.commit()

    #query one
    p_1 = session.query(Person).filter_by(Pname='bruce').first()
    print p_1

    #delete one
    p_2 = session.query(Person).filter_by(Pname='bruce').first()
    if p_2:
        session.delete(p_2)
        session.commit()

    #edit one
    p_3 = session.query(Person).filter_by(Pname='bruce').first()
    if p_3:
        p_3.Age = 55
        session.commit()

 

Python ORM 之间对比

Python ORM 之间对比 对于在文章里提到的每一种 Python ORM ,我们来列一下他们的优缺点:  SQLObject  优点: 采用了易懂的ActiveR...
  • permike
  • permike
  • 2016年08月10日 16:32
  • 2025

Python项目实战:个人博客(2):搭建orm框架

这一部分的代码相对比较复杂,主要用来方便我们进行数据库的操作.需要注意几点:首先’?’这个占位符的作用是什么?我们在传入sql语句时需要动态的替换值,但是一些值不是字符串的类型,所以不能直接用%s来替...

python学习——编写ORM

在一个Web App中,所有数据,包括用户信息、发布的日志、评论等,都存储在数据库中。在awesome-python3-webapp中,我们选择MySQL作为数据库。 Web App里面有很多地方都...

Python的ORM框架SQLAlchemy使用入门(二)【连接MySql数据库】

众生皆苦,放下即自在。天地皆空,唯有人在其中苦。沧海桑田,人生苦短。天地之空,在于无欲,任由万物在其中自由变幻,它依然安之若泰。人生之苦,皆因无力回天却又耿耿于怀。人本是人,只有承认自己不是万能之主,...
  • WuLex
  • WuLex
  • 2016年09月20日 17:14
  • 764

廖雪峰python教程实战 Day 3 - 编写ORM

Day3-编写ORM1.设计思路 在一个Web App中,所有的数据,包括用户信息,用户发布的日志,评论都放在数据库中,本次实战使用MySQL作为数据库。 Web App中,有许多地方都要用到数据库,...

Python中的ORM使用之peewee

本来要看看sqlalchemy这个老牌重量级ORM的,可以用sqlacodegen自动生成实体层。如下所示 sqlacodegen --noviews --noconstraints --noinde...

python轻量级ORM---peewee之API

1.classmethods  such as select/update/insert/delete queries。 # Example: class User(Model): ...

python sqlalchemy orm

ORM 和 Core相比:ORM主要是关注用户定义的对象,而Core更关注的是Schema,创建一个metadata容器,然后声明一个表对象和该容器进行关联。在ORM中我们会定义一个类去继承一个父类:...

Python学习 - 编写自己的ORM(1)

这篇博文参考的是廖雪峰的Python教程的实战部分,传送门。推荐大家看看装饰器和使用元类这两个章节,然后在看实战部分。 这篇博文有时间了还会更新,主要是学习Python的语法,如上面提到的装饰器...
  • yb1993
  • yb1993
  • 2014年10月18日 08:58
  • 650

python sqlalchemy对oracle数据库的ORM反射

一直在想程序调DB的表操作能不能简单一些,以前用的java,感觉hibernate,jpa什么的太复杂了,简单做一点点东西,要你把框架先了解一遍,jar包下一堆,配置文件先纠结一顿,然后... 你的热...
  • WHACKW
  • WHACKW
  • 2015年06月23日 19:59
  • 615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:python ORM
举报原因:
原因补充:

(最多只允许输入30个字)