。。。
#!_*_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) #修改后内容
。。。