python sqlalchemy 进行 mysql 数据库操作
发布时间:2020-12-20 10:45:13 所属栏目:Python 来源:网络整理
导读:1. 进行mysql数据库的创建,如果已经存在,就相当于进行数据库的连接操作 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String,Date from sqlalchemy.orm import
1. 进行mysql数据库的创建,如果已经存在,就相当于进行数据库的连接操作 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Integer,String,Date from sqlalchemy.orm import sessionmaker # 创建连接 engine = create_engine(‘mysql+pymysql://root:[email?protected]/oldboydb‘,encoding=‘utf-8‘) Base = declarative_base() # 生成orm基类 class User(Base): __tablename__ = ‘user‘ # table的名字 id = Column(Integer,primary_key=True) # 创建id属性 name = Column(String(32)) # 创建name属性 password = Column(String(64)) # 创建密码属性 def __repr__(self): # 用于进行查找时的数据返回 return ‘<%s name :%s>‘ %(self.id,self.name) Base.metadata.create_all(engine) # 进行指令的调用,即生成table 2. 进行数据的查询,包括条件查询和多条件查询 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column,Date from sqlalchemy.orm import sessionmaker # 创建连接 engine = create_engine(‘mysql+pymysql://root:[email?protected]/oldboydb‘,encoding=‘utf-8‘) Base = declarative_base() # 生成orm基类 class User(Base): # User继承了上述的操作 __tablename__ = ‘student_user‘ id = Column(Integer,primary_key=True) name = Column(String(32)) password = Column(String(64)) def __repr__(self): # 返回查询到的信息 return ‘<id: %s name: %s password: %s>‘ %(self.id,self.name,self.password) # 执行上述的操作 Base.metadata.create_all(engine) Session_class = sessionmaker(bind=engine) # 进行数据库的连接 Session = Session_class() # 生成session 实例 # 进行数据查询 .all()输出所有的检索结果,.first() 输出第一条的结果 data = Session.query(User).filter_by(name=‘alex‘).first() print(data) data = Session.query(User).filter(User.name == ‘rain‘).first() print(data) # 多条件查询 data = Session.query(User).filter(User.name==‘rain‘).filter(User.id > 1).first() print(data) 3. 进行用户属性的修改 # 进行数据的条件修改 data = Session.query(User).filter(User.name==‘rain‘).first() # 查找出数据的类 data.name = ‘Tom‘ # 对类属性进行修改 Session.commit() # 结果的提交 4. 添加新的用户信息 fake_user = User(name=‘Jack‘,password=‘123456‘) # 设置用户的名字和密码 Session.add(fake_user) # 将数据添加到表内 5. 进行用户信息的删除 data = Session.query(User).filter(User.name==‘Jack‘).first() # 查找用户信息 Session.delete(data) # 删除用户 Session.commit() # 提交结果 6. 数据的回滚操作 data = Session.query(User).filter(User.name==‘Jack‘).first() # 查找符合条件的数据 Session.delete(data) # 数据删除 Session.rollback() # 数据回滚,取消上述操作 Session.commit() # 提交结果 7. 数据统计 print(Session.query(User).filter(User.name.in_([‘alex‘,‘Jack‘])).count()) # 统计名字是‘alex‘或者‘Jack‘的次数 # 2
8. 根据名字进行数据分组 from sqlalchemy import func data = Session.query(User.name,func.count(User.name)).group_by(User.name).all() print(data) # [(‘alex‘,1),(‘Tom‘,(‘Jack‘,1)] ? 9. 定义数据库的student表,进行连表查询 # 定义Student类关联student table class Student(Base): __tablename__ = ‘student‘ id = Column(Integer,primary_key=True) name = Column(String(32)) register_data = Column(Date) sex = Column(String(32)) def __repr__(self): # 返回查询到的信息 return ‘<id: %s name: %s register_data: %s>‘ % (self.id,self.register_data) data = Session.query(User,Student).filter(User.name==Student.name).all() print(data) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |