python的sqlalchemy框架

先看一下sqlalchemy框架中的映射,sqlalchemy一共有三种映射方式:传统映射(classic)、
现代化映射(modern)、自定义映射。
在这里,只为大家讲一下classic映射和modern映射。

classic映射:
顾名思义,就是类似于hibernate那样,要写好多配置文件,这里放一个小例子:

#coding=utf-8
from sqlalchemy import Table, MetaData, Column, Integer, String, DateTime  
from datetime import datetime  
from sqlalchemy.engine import create_engine  
‘‘‘‘‘与数据库建立链接‘‘‘  
engine = create_engine("mysql://username:[email protected]/databasename",isolation_level="READ UNCOMMITTED")   
‘‘‘‘‘数据库表与对象之间的映射关系,类于hibernate中的xml配置文件‘‘‘  
metadata = MetaData()  
people = Table( #people  
                ‘people‘, metadata,  
                Column(‘id‘, Integer, primary_key=True),  
                Column(‘name‘, String(16), unique=True, nullable=False),  
                Column(‘gender‘, String(255), unique=True, nullable=True),  
                Column(‘created‘, DateTime, default=datetime.now)  
                )  
student = Table( #student  
                ‘student‘, metadata,  
                Column(‘id‘, Integer, primary_key=True),  
                Column(‘name‘, String(16), unique=True, nullable=False),  
                Column(‘gender‘, String(255), unique=True, nullable=True),  
                Column(‘created‘, DateTime, default=datetime.now)  
                )  
teacher = Table( #teacher  
                ‘teacher‘, metadata,  
                Column(‘id‘, Integer, primary_key=True),  
                Column(‘name‘, String(16), unique=True, nullable=False),  
                Column(‘gender‘, String(255), unique=True, nullable=True),  
                Column(‘created‘, DateTime, default=datetime.now)  
                )  
‘‘‘‘‘创建数据库的类‘‘‘  
class People(object):pass  
class Student(object):pass  
class Teacher(object):pass  
‘‘‘‘‘传统映射方式‘‘‘  
mapper(People,people)  
mapper(Student,student)  
mapper(Teacher,teacher)  
‘‘‘‘‘创建表‘‘‘  
metadata.create_all(engine)

此时,如果我们再写一个*.py文件
代码如下:

from dbproject.dbsetting import People,Teacher,engine
from sqlalchemy.orm import sessionmaker
people = People()
teahcer = Teacher()
people.name=‘renlei‘
people.id=1
teahcer.name=‘laoshi‘
teahcer.id=1
Session = sessionmaker()
Session.configure(bind=engine)
session = Session()
session.add(people)
session.add(teahcer)
session.flush()
session.commit()

编译运行这个python文件,就会发现数据库中的信息发生了相应变化。

modern映射:

如下,先写一个modern.py文件,代码:

#coding=utf-8
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
from sqlalchemy.engine import create_engine
‘‘‘与数据库建立链接‘‘‘
engine = create_engine("mysql://username:[email protected]/databasename",isolation_level="READ UNCOMMITTED") 
‘‘‘数据库表结构‘‘‘
Base = declarative_base()
class People():#定义一个基类当然也可以不定义,这里只是给个例子
    id = Column(Integer, primary_key=True)
    name = Column(String(16))
    gender = Column(String(16))
    age = Column(String(16))
class User(Base,People):
    __tablename__ = ‘users‘
    fullname = Column(String(16))
    password = Column(String(16))
class AdvancedUser(Base,People):
    __tablename__ = ‘advanceduser‘
    
    fullname = Column(String(16))
    password = Column(String(16))
    email = Column(String(16))
    
class Teacher(Base,People):
    __tablename__ = ‘teacher‘
    
    phone = Column(String(16))
#创建所有的表
Base.metadata.create_all(engine)

接入来再写一个control.py文件,代码:

#coding=utf-8
from sqlalchemy.orm.session import sessionmaker
from modern import engine,User,AdvancedUser,Teacher
user = User()
user.name = ‘username‘
user.gender = ‘male‘
au = AdvancedUser()
au.name = ‘auname‘
au.gender = ‘female‘
teacher = Teacher()
teacher.name = ‘wangdi‘
teacher.gender = ‘female‘
teacher.phone = ‘15264397652‘
Session = sessionmaker()
Session.configure(bind=engine)
session = Session()
session.add(user)
session.add(au)
session.add(teacher)
session.flush()
session.commit()

编译执行代码,会发现数据库内信息有变化,怎么样,与classic映射相比,这种写法是不是更方便啊。
这样,我们就可以省去大量的sql语句,直接使用python代码来完成。

时间: 2024-10-05 23:57:08

python的sqlalchemy框架的相关文章

python之sqlalchemy

python之sqlalchemy ORM: ORM框架的作用就是把数据库表的一行记录与一个对象互相做自动转换. 正确使用ORM的前提是了解关系数据库的原理. ORM就是把数据库表的行与相应的对象建立关联,互相转换. 由于关系数据库的多个表还可以用外键实现一对多.多对多等关联,相应地, ORM框架也可以提供两个对象之间的一对多.多对多等功能. 一 单表操作(不涉及一对多,多对多) #coding:utf8 import sqlalchemy from sqlalchemy import crea

python之SQLAlchemy ORM 上

前言: SQLAlchmey是暑假学的,当时学完后也没及时写博客整理下.这篇博客主要介绍下SQLAlchemy及基本操作,写完后有空做个堡垒机小项目.下篇博客整理写篇关于Web框架和django基础~~ 一.ORM介绍 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们

Python 并行分布式框架 Celery

Celery 简介 除了redis,还可以使用另外一个神器---Celery.Celery是一个异步任务的调度工具. Celery 是 Distributed Task Queue,分布式任务队列,分布式决定了可以有多个 worker 的存在,队列表示其是异步操作,即存在一个产生任务提出需求的工头,和一群等着被分配工作的码农. 在 Python 中定义 Celery 的时候,我们要引入 Broker,中文翻译过来就是"中间人"的意思,在这里 Broker 起到一个中间人的角色.在工头提

【转】Python 并行分布式框架 Celery

原文链接:https://blog.csdn.net/freeking101/article/details/74707619 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/ celery配置:http://docs.jinkan.o

Python之Web框架介绍

所有的语言Web框架本质其实就是起一个socket服务端,监听一个端口,然后运行起来 Web框架包含两部分,一部分是socket,另外一部分是业务的逻辑处理,根据请求的不同做不同的处理 Python的Web框架分成了两类, 即包含socket也包含业务逻辑处理的(tornado) 不包含socket(框架本身通过第三方模块实现socket)只包含业务逻辑处理(django,Flask) WSGI的全称是Web Server Gateway Interface,翻译过来就是Web服务器网关接口.具

Python开源爬虫框架scrapy的了解与认识

很多学习Python编程语言的朋友都会学习Python网络爬虫技术,也有专门学习网络爬虫技术的,那么如何学习Python爬虫技术呢,今天就给大家讲讲使用Python抓取数据时非常受欢迎的Python抓取框架scrapy,下面一起学习下Scrapy的架构,便于更好的使用这个工具. 一.概述 下图显示了Scrapy的大体架构,其中包含了它的主要组件及系统的数据处理流程(绿色箭头所示).下面就来一个个解释每个组件的作用及数据的处理过程. 二.组件 1.Scrapy Engine(Scrapy引擎) S

测试Flask+PYTHON的WEB框架

参数URL: http://blog.csdn.net/qwiwuqo/article/details/8970621 安装flask之前,你必须要先安装python和easy_install. 安装 virtualenv,这个主要是用来做解释器环境隔离的,避免同一机器上的多个python或者多个python的库依赖. 然后cd到myvir目录的Scripts下输入activate.bat,就进入了虚拟环境了,然后输入easy_install Flask. 测试Flask+PYTHON的WEB框

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

Python -- Web -- 使用框架

Python的web框架有很多: Flask,Django,Zope2,Web.py,Web2py,Pyramid,Bottle, Tornado... Flask 轻量级,比较简单 from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run()