1.ORM的介绍:
orm对象关系映射,是一种程序技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的--“虚拟对象数据库”。一般我们使用的数据库,都是关系型数据库,为了使用习惯和方便,所以前人们(俗称前人栽树后人乘凉嘛),就想出了通过ORM与数据库建立映射关系,从而达到不使用sql语句也能操作数据库。
image.pngorm的优点:
1、隐藏数据访问细节,不用使用原生sql语句,大大的提高了开发效率。
2、使我们构造固化数据简单方便。(创建数据)
orm的缺点:
1、因为对象关系映射的原理。关联和映射极大的影响了性能。
2.sqlalchemy的安装
Python中最常用的orm框架,就是sqlalchemy。
Python3:
pip3 install sqlalchemy
Python2:
pip install sqlalchemy
安装完成之后。就可以通过sqlalchemy连接数据库。sqlalchemy连接数据库的底层是MySQLdb。
而一般连接mysql的库,都会封装MySQLdb。
MySQL-Python
mysql+mysqldb://<user>:<password>@<host>[:<port>]/<dbname>
pymysql
mysql+pymysql://<username>:<password>@<host>/<dbname>[?<options>]
MySQL-Connector
mysql+mysqlconnector://<user>:<password>@<host>[:<port>]/<dbname>
cx_Oracle
oracle+cx_oracle://user:pass@host:port/dbname[?key=value&key=value...]
3.sqlalchemy创建数据表
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,String,Integer
from sqlalchemy.orm import sessionmaker
engine = create_engine("mysql+mysqlconnector://root :123456@localhost:3306/data",encoding='utf8',echo=True)
Base = declarative_base() # 生成ORM基类
# 建立表结构
class User(Base):
__tablename__ = 'student'
id = Column(Integer,primary_key=True)
name = Column(String(32))
gender = Column(String(32))
email = Column(String(64))
# 创建表结构
Base.metadata.create_all(engine)
4.创建表的第二种方法
#_author_='shaojie'
#-*- coding:utf-8 -*-
from sqlalchemy import Table,MetaData,Column,Integer,String
from sqlalchemy.orm import mapper
from sqlalchemy.engine import create_engine
# 创建一个连接对象socket
engine = create_engine("mysql+mysqlconnector://root:123456@localhost:3306/data",encoding='utf8',echo=True)
# 创建一个基类,绑定socket
metadata = MetaData(bind=engine)
# 创建表结构
students = Table('students',metadata,
Column('id',Integer,primary_key=True),
Column('name',String(36)),
Column('gender',String(36)),
Column('email',String(50)))
# 建立students表的映射关系
class Students(object):
def __init__(self,name,gender,email):
self.name = name
self.gender = gender
self.email = email
# 映射
mapper(Students,students)
# 创建表
metadata.create_all(engine)
如下图。这就是我们刚才创建的数据表students
image.png好了。很晚了,有女票抱紧女票了,没女票抱紧自己了。该睡觉了
网友评论