ORM、SQLAlchemy数据库操作

ORM介绍

背景:
用底层的sql写的话,相当于通过pymysql 游标的方式连接“http://blog.51cto.com/jacksoner/2113454 ”,为了避免把sql语句写死在代码里,有没有一种方法直接把原生sql封装好了并且以你熟悉的方式操作,像面向对象那样?

ORM就是对象映射关系程序。相当于ORM帮我们SQL写成类的形式,然后通过类来调用,获取,而不是写底层的sql(insert,update,select)来获取。

ORM 相当于把数据库也给你实例化了,在代码操作mysql中级又加了orm这一层。

orm的优点:
1、隐藏了数据访问细节,“封闭”的通用数据库交互,ORM的核心。他使得我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句。快速开发,由此而来。
2、ORM使我们构造固化数据结构变得简单易行。

sqlalchemy安装

在Python中,最有名的ORM框架是SQLAlchemy。用户包括openstack\Dropbox等知名公司或应用
安装:
pip install SQLAlchemy
SQLAlchemy==1.2.7

pip install pymysql

数据库:
CentOS Linux release 7.4.1708

mysql版本:5.6.35
IP:192.168.1.48
用户:root
密码:123456
创建一个超级用户:grant all privileges on . to [email protected]‘%‘ identified by ‘123456‘ WITH GRANT OPTION;
创建一个数据库: mysql> create database sqlalchemy;

方式一:

import pymysql
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String            #创建列,整型,字符串型
engine = create_engine(‘mysql+pymysql://jacker:[email protected]/sqlalchemy‘,encoding=‘utf-8‘,echo=True)
#echo=True:显示创建sql信息
Base = declarative_base()  # 生成orm基类

#这里的继承Base的类,创建user表,字段id(整型,主键) name(列 字符串32位) 密码(列 字符串64位)
class User(Base):
    __tablename__ = ‘user‘  # 表名
    id = Column(Integer, primary_key=True)
    name = Column(String(32))
    password = Column(String(64))
Base.metadata.create_all(engine) #创建表结构 (这里是父类调子类)

运行结果:

方式二 创建表,并写入数据:

创建表:

from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String

engine = create_engine(‘mysql+pymysql://jacker:[email protected]/sqlalchemy‘,encoding=‘utf-8‘)
metadata = MetaData(engine)

teacher = Table(‘user‘, metadata,
            Column(‘id‘, Integer, primary_key=True),
            Column(‘name‘, String(50), ),
            Column(‘fullname‘, Integer),
            Column(‘password‘, String(10)),
)
metadata.create_all(engine)

写入数据:

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

engine = create_engine(‘mysql+pymysql://jacker:[email protected]/sqlalchemy‘,encoding=‘utf-8‘)
#echo=True:显示信息
DBsession = sessionmaker(bind=engine)# 实例和engine绑定
session = DBsession()                 # 生成session实例,相当于游标

Base = declarative_base()# 生成orm基类

class User(Base):
    __tablename__ = ‘user‘
    id = Column(Integer, primary_key=True)
    name = Column(String(100))
    fullname = Column(String(100))
    password = Column(String(100))

#实例化操作
user1 = User(id=1001, name=‘ling‘, password=123)
user2 = User(id=1002, name=‘molin‘, password="123abc")
user3 = User(id=1003, name=‘karl‘, password=16)

验证:

数据查询

my_user=session.query(User).filter_by(name=‘molin‘).first()#显示匹配name=molin的一条
my = session.query(User).filter_by().all() #显示所有
print(my) #这个是个列表,通过循环遍历
for i in my:
print(i.name)
print(i.password)
print(my_user.id,my_user.password,my_user.name) #调用
#session.commit() #查询就不用提交了
session.close()

‘‘‘
filter和filter_by   条件查询

filter_by(name="ling")  不能使用>  <  =
filter(Student.id>1001)  这个就必须使用Student.id  可以使用> < =等
‘‘‘
a = session.query(User).filter(User.id>1002).all()
for i in a:
    print(i.name)
    print(i.password)
session.close()
多条件查询

objs = Session.query(User).filter(User.id>0).filter(User.id<7).all()

上面2个filter的关系相当于 user.id >1 AND user.id <7 的效果

修改数据:

my_user = session.query(User).filter_by(name="molin").first()
my_user.name = "fenggf" # 查询出来之后直接赋值修改
my_user.passwork = "123qwe"
session.commit()

原文地址:http://blog.51cto.com/jacksoner/2115188

时间: 2024-10-06 00:17:12

ORM、SQLAlchemy数据库操作的相关文章

sqlalchemy 数据库操作

1.简介 一种ORM 2.安装 pip3 install -i https://pypi.douban.com/simple sqlalchemy 3.连接数据库 from sqlalchemy import create_engine engine = create_engine( "mysql+pymysql://root:密码@127.0.0.1:3306/数据库名称?charset=utf8", max_overflow=0, # 超过连接池大小外最多创建的连接 pool_si

关于ORM的数据库操作见解

一对多字段增删改查 增 ## 方式一 Publish.objects.create(name="东京出版社", addr="东京") Publish.objects.create(name="南京出版社", addr="南京") Publish.objects.create(name="北京出版社", addr="北京") Book.objects.create(title="

sqlalchemy数据库分层操作

在学习sqlalchemy操作中,最常见的就是如下的示例,一个文件基本上包含了数据库的增删改查.sqlalchemy的具体操作我就不再详细说明了.流程大概是: 定义表 创建数据库引擎 创建表 插入数据 查询数据 1 #coding:utf-8 2 3 from sqlalchemy import Column,String,create_engine,MetaData 4 from sqlalchemy.orm import sessionmaker 5 from sqlalchemy.ext.

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- coding: utf-8 -*- ''' 数据起始日期:2015-05-08 数据库:mysql ''' import requests from bs4 import BeautifulSoup import json import pymysql import datetime import ti

Django(三) ORM 数据库操作

比较有用 转自 http://blog.csdn.net/fgf00/article/details/53678205 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数

Django入门4: ORM 数据库操作

大纲 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 2.创建数据库 表结构 二.Django ORM基本增删改查 1.表数据增删改查 2.表结构修改 三.Django ORM 字段类型 1.字段类型介绍 2.字段参数介绍 3.Django ORM 外键操作 一.DjangoORM 创建基本类型及生成数据库表结构 1.简介 ORM:关系对象映射.定义一个类自动生成数据库的表结构. 创建数据库的时候,一般有以下几种常用数据类型:数字.字符串以及时间. ORM分为两种: DB Fi

Django学习【第5篇】:Django之ORM数据库操作

django之ORM数据库操作 一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录----------------->类实例化对象 ORM的两大功能: 操作表: - 创建表 - 修改表 - 删除表 操作数据行: - 增删改查 ORM利用pymysql第三方工具链接数据库 Django没办法帮我们创建数据库,只能我们创建完之后告诉它,让django去链接 二.创建表之前的准备工作 一.自己创建数据库

【Django】ORM数据库操作

Django-ORM数据库操作 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录----------------->类实例化对象 ORM的两大功能: 操作表: - 创建表 - 修改表 - 删除表 操作数据行: - 增 删 改 查 ORM利用pymysql第三方工具链接数据库 Django默认的是sqlite数据库 将Django数据库修改为mysql: 1.settings.py 配置 DATABASES = {

Python开发:ORM sqlalchemy

本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 一.ORM介绍 orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sq