python-sqlalchemy 使用学习记录之创建表、增、删

2018-09-02  本文已影响0人  EndPein

创建表

创建数据表依赖的是 ssqlalchemy.ext.declarative 下面的 declarative_base 方法。所以需要先行引入

from sqlalchemy.ext.declarative import declarative_base

表类型这块可以看一下官方文档的介绍,基本能用到的都全部由官方抽象。 http://docs.sqlalchemy.org/en/latest/core/type_basics.html#generic-types

例如常见的 Integer、String、Date、DateTime、BigInteger、Boolean 可以直接从sqlalchemy模块中引用

from sqlalchemyimport Column,Integer, String, DateTime, Boolean

我们可以先创建一个信息表,这个表结构大概样例如下

我们可以先创建一个类 ,同时需要在里面指定数据表名称,但是在这之前,我们自己创建类需要继承sqlalchemy的declarative_base方法


from sqlalchemy.ext.declarativeimport declarative_base

from sqlalchemy.orm import sessionmaker

from sqlalchemyimport Column,Integer, String, DateTime, Boolean

from sqlalchemyimport create_engine

engine = create_engine("mysql+pymysql://root:@127.0.0.1/table?charset=utf8")

Base = declarative_base()

class My_Table(Base):

    tablename__ ='test_table'

    id = Column(Integer,primary_key =True)

    title = Column(String(200),nullable =False)

    content = Column(String(2000),nullable =False)

    types = Column(String(10),nullable =False)

    image = Column(String(300),)

    author = Column(String(20),)

    view_count = Column(Integer)

    created_at = Column(DateTime)

    is_valid = Column(Boolean)

My_Table.metadata.create_all(engine) 

Session = sessionmaker(bind=engine)

以上代码执行后,就会创建数据表,接下来,我在逐行讲解一下具体的内容分别是什么,首先是引入了sessionmaker,Session的主要目的是建立与数据库的会话,它维护你加载和关联的所有数据库对象。它是数据库查询(Query)的一个入口。

在Sqlalchemy中,数据库的查询操作是通过Query对象来实现的。而Session提供了创建Query对象的接口

在我们创建了My_Table这个类以后,我们使用了 .metadata.create_all()这个方法,并将engine作为参数传入(engine是连接数据库的方法),你也可以直接使用父类Base的方式将多个表同时创建,例如Base.metadata.create_all(engine) 。 

接下来在来说My_Table 里面的内容,自己创建类继承自declarative_base()。在创建的时候,我们会默认给类加一个表名。(__tablename__)

然后就是表中的各个对象的创建

增、删、改、查

在数据库表创建好以后,我们可以创建一个自己的类,用来写自己的一些功能,我们先写Orm_Test这个类。

class OrmTest(object):

    def __init__(self):

        self.session = Session()

    def add_one(self):

    #'新增一条记录'

        new_obj = My_Table(title ='标题',content ='内容',types ='0',)

        self.session.add(new_obj)

        self.session.commit()

        return new_obj

    def get_one(self):

        #查询一条数据

        return self.session.query(My_Table).get(3)

    def get_all(self):

        #查询多条数据

        return self.session.query(My_Table).filter_by(is_valid=True)

    def update(self,pk):

    #修改数据

        new_obj =self.session.query(My_Table).get(pk)

        if new_obj:

            new_obj.is_valid =0

            self.session.add(new_obj)

            self.session.commit()

            return True

        return False

    def delete(self,pk):

        #删除数据

        new_obj =self.session.query(My_Table).get(pk)

        self.session.delete(new_obj)

        self.session.commit()

上一篇 下一篇

猜你喜欢

热点阅读