1、ORM技术(对象关系映射)简介python
若是从数据库查到几条数据,须要在Python中表示出来,若是没学ORM技术,则会使用tuple表示,由于tuple类型的数据不可变。也能够经过类的形式体现出来。mysql
一、ORM思想:每张表都会有一个对应的类。类的属性和表的字段一一对应。sql
示例(经过类体现数据库)数据库
2、SQLAlchemy 的安装 与 初始化链接 安全
一、在Windows 环境下的pycharm 点击 Terminal 输入 pip install SQLAlchemy函数
二、打开虚拟机,进入MySQL 建立对应的库 sqlalchemy 并受权.net
[root@JSH-01 ~]# mysql -uroot -p123456
mysql> create database sqlalchemy;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)对象
三、初始化链接 sqlalchemy 语法结构以下:sqlalchemy
from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:123456@192.168.6.137/sqlalchemy',echo=True) print(engine)
命令解析:接口
create_engine()返回一个Engine的实例,而且它表示经过数据库语法处理细节的核心接口,在这种状况下,数据库语法将会被解释成python的类方法。
mysql+pymysql://root@123456@192.168.6.137/sqlalchemy 其中root是数据库的用户名,123456是密码;192.168.6.137 为数据库的IP地址;sqlalchemy 须要链接的库名。
echo参数为True时,会显示每条执行的SQL语句,能够关闭;
运行结果:
3、SQLAlchemy 的操做使用
一、经过SQL语句建立表格
from sqlalchemy import create_engine engine = create_engine('mysql+pymysql://root:123456@192.168.37.128/sqlalchemy',echo=True) print(engine) cus = engine.connect() #相似于建立SQL游标 sql = '''create table student(id int not null,name VARCHAR(100),age int,address VARCHAR(100))''' cus.execute(sql) cus.close()
二、经过ORM方式建立表格
from sqlalchemy import create_engine from sqlalchemy import Table from sqlalchemy import Integer from sqlalchemy import Column from sqlalchemy import String from sqlalchemy import MetaData engine = create_engine('mysql+pymysql://root:123456@192.168.37.128/sqlalchemy') #建立与数据库的链接 metadata = MetaData(engine) #绑定数据源 user = Table("user",metadata, Column("id",Integer,primary_key=True), Column("name",String(100)), Column("tel",String(15)), ) metadata.create_all(engine)
按照如上语句建立的表,相关参数以下:
① MetaData类:主要用于保存表结构,链接字符串等数据,是一个多表共享的对象。
② 建立与数据库的链接
engine = create_engine('mysql+pymysql://root:123456@192.168.37.128/sqlalchemy')
③ 绑定数据源
metadata = MetaData(engine)
④ 建立表(安全操做模式:即先判断该表是否存在;若是存在则不建立,若是不存在则建立)
metadata.create_all(engine)
⑤ Table类的构造函数 Table_ _init _ _(self, name, metadata, *args, **kwargs)
其中 name 定义表的名字; metadata 数据源;*args中的 Column类 定义表格中的列。
⑥Column类的构造函数 Column_ _init _ _(self, name, type_, *args, **kwargs)
其中 name 定义列的名字;type_ 类型(详见 sqlalchemy.types);
primary_key 若是为true 则该字段为主键。