美文网首页
笔记03:sqlalchemy增删改查

笔记03:sqlalchemy增删改查

作者: 东岳哥哥 | 来源:发表于2018-03-30 22:05 被阅读0次

    sqlalchemy增删改查

    先定义好类

    文件名:userdatabase .py
    # -*- coding: utf-8 -*-
    """
    作用:
    1、连接数据库
    2、创建表
    
    """
    
    from sqlalchemy import create_engine,Column,Integer,String
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy.orm import sessionmaker 
    
    host = 'localhost'
    port = '3306'
    username = 'root'
    password = ''
    database = 'dd_db'
    dd = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(username,password,host,port,database)
    #注意要设置charset,不然插入中文会报错
    #获取数据库引擎
    engine = create_engine(dd)
    
    Base = declarative_base(engine)
    
    #定义一个User类,数据表名为:person
    class User(Base):    
        __tablename__ = 'person'#定义表名
        #表字段按照下面的顺序依次排布
        id = Column(Integer,primary_key=True)
        name = Column(String(64),index=True)
        email = Column(String(100))
        age = Column(Integer)
    
    #创建数据表,如果已经存在则忽略
    Base.metadata.create_all()
    
    #获取数据库连接,提供给外部使用
    conn = engine.connect()
    
    '''
    数据操作:
    1、添加/更新数据
    2、查询数据
    3、删除数据
    '''
    
    #创建与数据库的会话session,这里返回的是一个类class,不是实例
    Session = sessionmaker(bind=engine)#绑定engine
    session = Session()#初始化session实例
    
    #1、添加/更新数据
    def addUser(user):
    #    Session = sessionmaker(bind=engine)#绑定engine
     #   session = Session()#初始化session实例
        result = session.query(User).filter(User.name==user.name).first()
        if result is not None:
            #说明已经存在了,就更新它
            user.id = result.id
            session.merge(user)#没有id的话,写入不了,会抛出异常
            print('已经存在对象,更新数据')
        else:
            session.add(user)#如果已经存在的话,也是写入不了,会抛出异常
            #添加数据是不需要id,也行,但是merge一定要
        session.commit()#提交,保存到数据库中,不写这句话,就不会保存到数据库的
        session.close()
            
    def delUser(name):
        result = session.query(User).filter(User.name==name).first()
        if result is not None:
            session.delete(result)
            session.commit()
            session.close()
    

    使用

    # -*- coding: utf-8 -*-
    from userdatabase import User
    from userdatabase import addUser,delUser
    
    #user = User(name='王老五',email = '789@qq.com',age = 25)
    user = User(name = '阿玉',email = 'ayu@qq.com',age = 26)
    
    print(user.id)
    print(user.name)
    
    addUser(user)
    
    delUser('王老五')
    
    user = User(name='爱心',email = 'aixin@qq.com',age = 25)
    
    addUser(user)
    

    学习了两个晚上,弄懂了数据的添加与删除。

    相关文章

      网友评论

          本文标题:笔记03:sqlalchemy增删改查

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