zoukankan      html  css  js  c++  java
  • sqlalchemy操作----建表 插入 查询 删除

    。。。

    #!_*_coding:utf-8_*_
    #__author__:"Alex huang"
    import sqlalchemy
    from sqlalchemy import create_engine
    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column,Integer,String
    
    
    engine = create_engine("mysql+pymysql://hrg:123@192.168.80.200:3306/test",encoding='utf8')
    Base = declarative_base()  #生成orm基类
    
    class User(Base):
        __tablename__ = 'user' #表名
        id = Column(Integer, primary_key=True)
        name = Column(String(32))
        password = Column(String(64))
        def __repr__(self):
            return "id:%s name:%s" %(self.id,self.name)
    
    Base.metadata.create_all(engine)  #创建表
    Session_class = sqlalchemy.orm.session.sessionmaker(bind=engine)  # 创建与数据库的会话session class ,注意,这里返回给session的是个class,不是实例
    Session = Session_class()  # 生成session实例
    #
    #插入
    # user_obj = User(name="alex", password="alex3714")  # 生成你要创建的数据对象
    # user_obj2 = User(name="alex2", password="alex3714")  # 生成你要创建的数据对象
    # print(user_obj.name, user_obj.id)  # 此时还没创建对象呢,不信你打印一下id发现还是None
    # Session.add(user_obj)  # 把要创建的数据对象添加到这个session里, 一会统一创建
    # Session.add(user_obj2)  # 把要创建的数据对象添加到这个session里, 一会统一创建
    # print(user_obj.name, user_obj.id)  # 此时也依然还没创建
    # Session.commit()  # 现此才统一提交,创建数据
    
    #查询
    #data = Session.query(User).filter().first()  #只取返回的第一条记录
    #data = Session.query(User).filter().all()   #取返回的所有记录
    '''filter_by与filter的区别,用法不同而已,filter 可以像写 sql 的 where 条件那样写 > < 等条件,
    但引用列名时,需要通过 类名.属性名 的方式。 filter_by 可以使用 python 的正常参数传递方法传递条件,
    指定列名时,不需要额外指定类名。,参数名对应名类中的属性名,但似乎不能使用 > < 等条件。各有所长吧'''
    #data = Session.query(User).filter(User.id>2).all()   #加过滤条件id大于2的
    #data = Session.query(User).filter(User.id==2).all()
    #data = Session.query(User).filter_by(id=2).all()
    # data = Session.query(User).filter(User.id>2).filter(User.id<5).all()  #多条件查询
    # print(data)     #其实返回的data只是一个对象,即内存地址。所以在表定义类中有了返回函数__repr__,data才是实际的内容。
    # print(data[0].password,data[0].name)
    #
    #修改
    # data = Session.query(User).filter(User.id>2).filter(User.id<5).all()  #先查询出要修改的内容
    # print(data)     #修改前内容
    # data[0].name = "new alex"
    # data[0].password = 'nnn'
    # data[1].name = "new2"
    # Session.commit()
    #
    #删除
    Session.query(User).filter(User.id==4).delete()  #先查询出要删除的内容直接删除
    data = Session.query(User).filter().all()  #先查询出要修改的内容
    print(data) #修改后内容
    

      。。。

  • 相关阅读:
    2018/12/06 L1-031 到底是不是太胖了 Java
    2018/12/06 L1-030 一帮一 Java
    2018/12/06 L1-029 是不是太胖了 Java
    .NET Framework 类库命名空间
    .NET获取根目录
    ddd领域驱动设计
    垃圾回收
    rest api
    数据库ACID
    事务隔离级别
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/9123506.html
Copyright © 2011-2022 走看看