Python3 集成SQLAlchemy ORM 框架:实现MySQL 表初始化解析

你猜 阅读:246 2021-03-31 12:54:11 评论:0

什么是ORM

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


什么是SQLAlchemy 

SQLAlchemy是python的ORM框架

安装SQLAlchemy 框架,前提条件必须安装PyMySQL 框架

pip install pymysql

再安装SQLAlchemy 框架

pip install sqlalchemy

 

如何使用SQLAlchemy  连接MySQL数据库并创建表

1、通过import 关键字,导入依赖的包

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

简单说明导入的包功能:

create_engine:创建数据库引擎(连接mysql 数据库核心)

Table:创建表

Column:创建表字段

Integer:指定表字段的数据类型(整形)

String:指定表字段的数据类型(字符串)

MetaData:元数据类型

ForeignKey:指定表的外键关系

2、创建一个数据库引擎

engine = create_engine("mysql+pymysql://root:123456@localhost:3306/hotel", echo=True)

3、创建元数据

metadata = MetaData(engine)

4、添加表结构数据

user = Table('user', metadata, 
             Column('id', Integer, primary_key=True), 
             Column('name', String(20)), 
             Column('fullname', String(40)) 
             ) 
address_table = Table('address', metadata, 
                      Column('id', Integer, primary_key=True), 
                      Column('user_id', None, ForeignKey('user.id')), 
                      Column('email', String(128), nullable=False) 
                      )

5、执行表创建

metadata.create_all()

注意:在第四步时已经将表结构存到了metadata里面,然后让metadata执行create_all()方法,这样就向指定的数据库里创建了user和address表。

6、完整的功能源码:

from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData, ForeignKey 
 
 
engine = create_engine("mysql+pymysql://root:123456@localhost:3306/hotel", echo=True) 
metadata = MetaData(engine) 
 
user = Table('user', metadata, 
             Column('id', Integer, primary_key=True), 
             Column('name', String(20)), 
             Column('fullname', String(40)) 
             ) 
address_table = Table('address', metadata, 
                      Column('id', Integer, primary_key=True), 
                      Column('user_id', None, ForeignKey('user.id')), 
                      Column('email', String(128), nullable=False) 
                      ) 
 
metadata.create_all() 

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
KIKK导航

KIKK导航

关注我们