orm介绍

MySQL有很多的SQL语句; 比如要查询数据库时的语句写法很多,很难记住这些语句,通过orm 就可以避免写这些复杂的语句,可以通过模块来进行数据库的交互。

SQLAlchemy 是Python 社区最知名的 ORM 工具之一,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型。

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

orm的优点:

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

缺点:

无可避免的,自动化意味着映射和关联管理,代价是牺牲性能(早期,这是所有不喜欢ORM人的共同点)。现在的各种ORM框架都在尝试使用各种方法来减轻这块(LazyLoad,Cache),效果还是很显著的。


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

# 创建连接
# 通过pymysql执行sql(还支持MySQL-db等);root是账号:密码;MySQL的IP地址;test是MySQL中的数据库。
# 这里的密码是qwe123QWE!@#,IP前面那个@是用来分割密码和IP的
# echo=True回显示生成sql语句的过程
engine = create_engine("mysql+pymysql://root:qwe123QWE!@#@192.168.163.131/test",encoding='utf-8',echo=True)

# 生成orm基类
Base = declarative_base()

# 继承Base基类
class User(Base):
    '''
    定义表结构
    '''
    __tablename__ = 'user' # 表名
    id = Column(Integer, primary_key=True)  # 主键
    name = Column(String(32))  # name字段
    password = Column(String(64))  # password字段

# 创建表结构
# 这里会将继承了Base的class User调用过来,且使用创建好的engine连接
Base.metadata.create_all(engine)

上图:在pycharm中执行代码可以看到,生成sql语句的过程(这是因为echo=True),否则什么也不会回显。

上图:在test数据库中创建一个table,名为user。可以看到图中的user表结构与python代码中的相同。