美文网首页
MySQL(ORM)

MySQL(ORM)

作者: hie | 来源:发表于2018-11-22 17:23 被阅读0次

ORM就是把数据库表的行与相应的对象建立关联,互相转换

from sqlalchemyimport Column, String, create_engine, ForeignKey

from sqlalchemy.ormimport sessionmaker, relationship

from sqlalchemy.ext.declarativeimport declarative_base

# 创建对象的基类:

Base = declarative_base()

class User(Base):

        __tablename__ ='user'

        id = Column(String(20), primary_key=True)

        name = Column(String(20))

        # 一对多:

        # 查询一个User对象时,该对象的books属性将返回一个包含若干个Book对象的list。

        books = relationship('Book')

        def __str__(self):

                return 'id:'+self.id+' name:'+self.name

# 一个User拥有多个Book,就可以定义一对多关系

class Book(Base):

        __tablename__ ='book'

        id = Column(String(20), primary_key=True)

        name = Column(String(20))

        # “多”的一方的book表是通过外键关联到user表的:

         user_id = Column(String(20), ForeignKey('user.id'))

        def __str__(self):

                return 'id:' +self.id +' name:' +self.name +' 拥有者:'+self.user_id

# 初始化数据库连接:

engine = create_engine('mysql+mysqlconnector://root:lxj4522241991@localhost:3306/mytest')

# 创建DBSession类型:

DBSession = sessionmaker(bind=engine)

"""插入数据表"""

def insert():

            session = DBSession()

            new_user = User(id='1111', name='bob')

            # 添加新数据

            session.add(new_user)

            # 提交即保存到数据库:

            session.commit()

            session.close()

def insert_book():

            session = DBSession()

            # session.execute('create table book (id varchar(20) primary key ,name varchar(20), user_id varchar (20))')

            book = Book(id='1', name='iOS开发', user_id='1')

            session.add(book)

            session.commit()

            session.close()

"""查询"""

def query():

            session = DBSession()

            # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:

            user = session.query(User).filter(User.id).all()

            if isinstance(user, list):

                    for u in user:

                            for book in u.books:

                                    print(book)

                            print(u)

              else:

                    print(user)

            session.close()

if __name__ =='__main__':

        insert()

        insert_book()

        query()

相关文章

网友评论

      本文标题:MySQL(ORM)

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