web.py开发web 第三章 Sqlalchemy

    web开发中一般的主要版块就是视图、模板、数据库操作,前面已经讲了最基础的视图跟模板,这一章主要是介绍下数据库操作,如第一章前言所说,我们的数据库操作是使用sqlalchemy来实现的。

    不同于很多web开发,python开发web的数据库很多是通过建立数据表类,绑定数据库连接,然后自动创建数据表,这种设计很大程度上降低了在开发阶段修改数据库结构的麻烦,而且由于表是对应一个个类创建而成,可以很清晰的在任何时候了解到该app的数据库是如何设计的,这对维护的意义也是非常大的。

    在这里我们使用常用的User表来做介绍,先上代码。
models.py

# -*- coding:utf-8 -*-
from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker

#定义数据库的账号、端口、密码、数据库名,使用的连接模块,这里用的是mysqldb
engine = create_engine(
    'mysql+mysqldb://root:123456@localhost:3306/temp?charset=utf8',
    echo=False#是否输出数据库操作过程,很方便调试
)

#定义一个函数,用来获取sqlalchemy的session
def bindSQL():
    return scoped_session(sessionmaker(bind=engine))

Base = declarative_base()

class User(Base):
    __tablename__ = "user"
    id = Column(Integer, primary_key=True)
    name = Column(String(20), unique=True)
    email = Column(String(32), unique=True)
    password = Column(String(32))
    superuser = Column(Boolean, default=False)

metadata = Base.metadata

if __name__ == "__main__":
    metadata.create_all(engine)#运行python models.py就会自动创建定义的所有表

    以上就是User表的定义,可以在User类里非常清晰的看出这个数据表是如何设计的。接下来先在mysql创建一个叫"tech"的数据库,接着只要在命令行运行python models.py就可以看到数据库中出现了User表了,用数据库操作工具看看是否与定义的内容一样吧:)


你可能感兴趣的:(web开发,web.py,sqlalchemy)