利用SQLAlchemy访问数据库

作者: 诺馨 | 来源:发表于2018-03-21 00:07 被阅读6次

SQLAlchemy是Python编程语言下的一款开源软件,提供了SQL工具包及对象关系映射(ORM)工具。

值得特别注意的是ORM,全称object-relational mapping,即对象关系映射。再简单点来讲,ORM就是将python的类映射到数据库中的表,一个类对应一个表。

第一步,(如有提示,需要更新下pip,使用命令行sudo pip install --upgrade pip),安装SQLAlchemy

sudo pip install sqlalchemy

出现以下信息即表示安装成功,最新版本1.2.5。

Collecting sqlalchemy
Installing collected packages: sqlalchemy
Successfully installed sqlalchemy-1.2.5

接着启动MySQL 服务,输入mysql -u root -p,回车,再输入密码,回车,以下信息说明MySQL已经正常启动了。

mysql

创建一个数据库:

CREATE DATABASE 数据库名称

创建一个类,取名叫User吧

# 创建对象的基类
Base = declarative_base()

# 定义User对象
class User(Base):
    # 表的名字
    __tablename__ = 'school'
    # 表的结构
    id = Column(Integer, primary_key=True)
    school_name = Column(String(20), nullable=False)

往表中添加记录

def populate(engine):   
    Base.metadata.bind = engine
    
    # 创建DBSession类型,即数据库会话类
    DBSession = sessionmaker(bind=engine)
    
    # 创建session对象,有了session,就可以用它去执行SQL了
    session = DBSession()
    user_info = User(school_name='清华')

    # 添加到session
    session.add(user_info)
    session.commit()

连接数据库,并开始执行

# create_engine()用来初始化数据库连接。
# SQLAlchemy用一个字符串表示连接信息:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'

engine =  create_engine('mysql+mysqlconnector://root:password@localhost:3306/dbname')

#找到Base下的所有子类,并在数据库中建立这些表
Base.metadata.create_all(engine)

populate(engine)
Base.metadata.bind = engine

DBSession = sessionmaker()
DBSession.bind = engine
session = DBSession()

# 获取User对象中的第一条数据
user = session.query(User).first()

哦,别忘了安装MySQL驱动,不然会报错:ImportError: No module named mysql,在这里用的是mysqlconnector驱动,所以:

sudo pip install mysql-connector

目前,有两个MySQL驱动:

  • mysql-connector-python:是MySQL官方的纯Python驱动;

  • MySQL-python:是封装了MySQL C驱动的Python驱动。

这里有两篇不错的介绍SQLAlchemy的博客
SQLAlchemy 教程 —— 基础入门篇
SQLAlchemy使用经验

相关文章

网友评论

    本文标题:利用SQLAlchemy访问数据库

    本文链接:https://www.haomeiwen.com/subject/dlviqftx.html