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) #修改后内容
    

      。。。

  • 相关阅读:
    hiho_1081_最短路径1
    hiho_1079_离散化
    hiho_1078_线段树区间修改
    hiho_1069_最近公共祖先3
    【.netcore学习】.netcore添加到 supervisor 守护进程自启动报错
    【.NetCore学习】ubuntu16.04 搭建.net core mvc api 运行环境
    【.NetCore学习】ASP.NET Core EF Core2.0 DB First现有数据库自动生成实体Context
    【vue基础学习】vue.js开发环境搭建
    【vue学习】vue中怎么引用laydate.js日期插件
    【年终总结】个人的2017年年终总结
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/9123506.html
Copyright © 2011-2022 走看看