加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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() # 结果的提交
print(data.id) # 打印查找结果的id信息

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读