python操作mysql ——sqlalchemy (ORM)

以前都是通过sql语句操作数据库,通过orm映射操作数据库就更简单了。

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

#连接数据库
engine=create_engine('mysql+pymysql://root:123@localhost/pydb?charset=utf8')
print(engine)

#设定基类
Base = declarative_base()
Session=sessionmaker(bind=engine)

#数据类继承Base
class User(Base):
    __tablename__='stedent'
    id=Column(Integer,primary_key=True)
    name=Column(String(20))
    wedding=Column(String(10))
    xingzuo=Column(String(10))
    job=Column(String(20))
    home=Column(String(20))
User.metadata.create_all(engine)  #创建表


class OrmTest():
    def __init__(self):
        self.session=Session()
    def add(self):
        user=User(
            name='汤福平',
            wedding='未婚',
            xingzuo='巨蟹座',
            job='IT研究专家',
            home='中国'
        )
        user2 = User(
            name='徐繁韵',
            wedding='未婚',
            xingzuo='巨蟹座',
            job='IT研究专家',
            home='中国'
        )
        #self.session.add(user)
        self.session.add_all([user,user2])
        self.session.commit()
        return user
    def get_one(self):
        user=self.session.query(User).get(3)
        return user
    def get_more(self):
        users=self.session.query(User).filter_by(name='徐繁韵')
        return users
if __name__ == '__main__':
    ormTest=OrmTest()
    #print(ormTest.add().id)
    #print(ormTest.get_one().name if ormTest.get_one() else '数据不存在' )
    result=ormTest.get_more()
    print(result.count())
    # for user in result:
    #     print(user.home)
    print([user.home for user in  ormTest.get_more()] if ormTest.get_more() else '数据为空')

    print(user.home for user in result)

重点学习,请看官方文档http://docs.sqlalchemy.org/en/latest/

猜你喜欢

转载自blog.csdn.net/weixin_36586120/article/details/79516530