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

      。。。

  • 相关阅读:
    有点自作聪明
    curl 一个无比有用的网站开发工具
    [Swift]LeetCode889. 根据前序和后序遍历构造二叉树 | Construct Binary Tree from Preorder and Postorder Traversal
    [Swift]LeetCode888. 公平的糖果交换 | Fair Candy Swap
    [Swift]LeetCode887. 鸡蛋掉落 | Super Egg Drop
    [Swift]LeetCode886. 可能的二分法 | Possible Bipartition
    [Swift]LeetCode885. 螺旋矩阵 III | Spiral Matrix III
    [Swift]LeetCode884. 两句话中的不常见单词 | Uncommon Words from Two Sentences
    [Swift]LeetCode883. 三维形体投影面积 | Projection Area of 3D Shapes
    [Swift]LeetCode882. 细分图中的可到达结点 | Reachable Nodes In Subdivided Graph
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/9123506.html
Copyright © 2011-2022 走看看