Python--ORMフレームワーク

2220 ワード

#           ,       .         pyton         ,    list    
# list       tuple,       .  id  name user 
# [
#     ('1', 'Michael'),
#     ('2', 'Bob'),
#     ('3', 'Adam')
# ]

# Python DB-API              .
#    tuple            .     tuple class    ,             

# class User(object):
#     def __init__(self, id, name):
#         self.id = id
#         self.name = name

#        ORM  : Object-Relational Mapping,                 .
#            ,   ORM      .
#  Python ,     ORM   SQLAlchemy.      SQLAlchemy   .

from sqlalchemy import Column, String, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class User(Base):
    #     
    __tablename__ = 'user'

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

#         
engine = create_engine('mysql+mysqlconnector://root:111111@localhost:3306/test')
#   DBSession  
DBSession = sessionmaker(bind=engine)
# create_engine          .
# SQLAlchemy            '     +       ://   :  @    :   /    '

# #   session  :
# session = DBSession()
# #    User  
# new_user = User(id='5', name='Bob')
# #    session
# session.add(new_user)
# #         
# session.commit()
# #   session
# session.close()

#         session,         session,        .(DBSession  ,              )

#   
session = DBSession()
#   Query  , filter where  ,     one()     ,     all()      .
user = session.query(User).filter(User.id=='5').one()
print('type:', type(user))
print('name:', user.name)
session.close()

# ORM                   ,     .
#                       ,       ,    , ORM                 ,      .
#   ,     User    Book,             
# class User(Base):
#     __tablename__ = 'user'
#
#     id = Column(String(20), primary_key=True)
#     name = Column(String(20))
#     books = relationship('BOOK')
#
# class BOOK(Base):
#     __tablename__ = 'book'
#     id = Column(String(20), primary_key=True)
#     nam = Column(String(20))
#     user_id = Column(String(20), ForeignKey('user.id'))