会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 128778个问题
Python 全系列/第六阶段:数据库编程基础/python操作mysql 151楼
Python 全系列/第六阶段:数据库编程基础/python操作mysql 152楼
Python 全系列/第六阶段:数据库编程基础/python操作mysql 153楼
Python 全系列/第六阶段:数据库编程基础/python操作mysql 154楼
Python 全系列/第六阶段:数据库编程基础/python操作mysql 155楼
Python 全系列/第六阶段:数据库编程基础/MySQL数据库的使用 156楼

#DBUtil的代码

import pymysql
class DBUtil:
    config={
        'host':'localhost',
        'port':3306,
        'user':'root',
        'passwd':'ftzlxy',
        'db':'music_project',
        'charset':'utf8'
    }


    def __init__(self) -> None:
        #获取连接,获取游标
        self.con=pymysql.connect(**DBUtil.config)
        self.cursor=self.con.cursor()

    def close(self)->None:
        #关闭游标,关闭连接
        if self.cursor:
            self.cursor.close()
        if self.con:
            self.con.close()


        #封装dml
    def execute_dml(self,sql,*args):            #不封装时用*args
        #可以执行dml语句用于数据的增删改
        #执行sql
        try:
            id=self.con.insert_id()
            self.cursor.execute(sql,args)
            #提交事务
            self.con.commit()
            return id
        except Exception as e:
            print(e)
            if self.con:
                self.con.rollback()
        finally:
            self.close()

        #封装dql
    def query_one(self,sql,*args):
        #获取一条数据
        try:
            self.cursor.execute(sql,args)
            rs=self.cursor.fetchone()
            return rs
        except Exception as e:
            print(e)
        finally:
            self.close()
    def query_many(self,sql,*args):
        #获取多条数据
        pass
    def query_all(self,sql,*args):
        #获取所有数据
        pass
   

if __name__=='__main__':
   
    db=DBUtil()
    sql='''
     select * from t_user;
    '''
    print(db.query_one(sql))


#MyService的代码

from dbutil import DBUtil

class MyService:

    def __init__(self) -> None:
        self.user=None
    def login(self,uname,passwd):
        sql='select * from t_user where uname=%s and passwd=%s'
        user=DBUtil().query_one(sql,uname,passwd)                 #!!!!!引用类时记得加()如DBUtil().query_one(sql) 而不是DBUtil.query_one(sql)
        if user:
            self.user=user
            return True
        else:
            return False

    def add_music(self,files):
        for f in files:
            #取音乐名字
            start=f.rfind("/")+1
            end=f.rfind(".mp3")
            music_name=f[start:end]
            print(music_name)
            #将音乐保存到t_music表
            sql="insert into t_music(music_name,path) values(%s,%s)"
            mid=DBUtil().execute_dml(sql,music_name,f)        #f是路径-->path
            print(mid)
            #用户选择的音乐保存到t_list
            sql="insert into t_list(mid,uid) values(%s,%s)"
            DBUtil().execute_dml(sql,mid,self.user[0])         #[0]:第一个字段

if __name__=="__main__":
    pass
    #db=MyService()
    #print(db.login())


老师,我因为外键的原因报错了,通过输出mid我发现mid一直是0而不是insert进t_music的id,检查代码后也没发现错误,请问该如何解决呢

image.png

Python 全系列/第六阶段:数据库编程基础/项目-音乐播放器-旧 157楼
Python 全系列/第六阶段:数据库编程基础/python操作mysql 158楼
Python 全系列/第六阶段:数据库编程基础/项目-音乐播放器-旧 159楼

可以使用yum 进行安装吗?

[root@centos7python ~]# yum install pcp-pmda-redis.x86_64

已加载插件:fastestmirror

Loading mirror speeds from cached hostfile

 * base: mirrors.aliyun.com

 * extras: ftp.sjtu.edu.cn

 * updates: ftp.sjtu.edu.cn

base                                                                         | 3.6 kB  00:00:00     

extras                                                                       | 2.9 kB  00:00:00     

updates                                                                      | 2.9 kB  00:00:00     

updates/7/x86_64/primary_db                                                  |  18 MB  00:00:02     

正在解决依赖关系

--> 正在检查事务

---> 软件包 pcp-pmda-redis.x86_64.0.4.3.2-13.el7_9 将被 安装

--> 正在处理依赖关系 perl-PCP-PMDA = 4.3.2-13.el7_9,它被软件包 pcp-pmda-redis-4.3.2-13.el7_9.x86_64 需要

--> 正在检查事务

---> 软件包 perl-PCP-PMDA.x86_64.0.4.3.2-13.el7_9 将被 安装

--> 正在处理依赖关系 pcp-libs = 4.3.2-13.el7_9,它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在处理依赖关系 libpcp_pmda.so.3(PCP_PMDA_3.0)(64bit),它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在处理依赖关系 libpcp.so.3(PCP_3.22)(64bit),它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在处理依赖关系 libpcp.so.3(PCP_3.21)(64bit),它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在处理依赖关系 libpcp.so.3(PCP_3.0)(64bit),它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在处理依赖关系 libpcp_pmda.so.3()(64bit),它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在处理依赖关系 libpcp.so.3()(64bit),它被软件包 perl-PCP-PMDA-4.3.2-13.el7_9.x86_64 需要

--> 正在检查事务

---> 软件包 pcp-libs.x86_64.0.4.3.2-13.el7_9 将被 安装

--> 正在处理依赖关系 pcp-conf = 4.3.2-13.el7_9,它被软件包 pcp-libs-4.3.2-13.el7_9.x86_64 需要

--> 正在检查事务

---> 软件包 pcp-conf.x86_64.0.4.3.2-13.el7_9 将被 安装

--> 解决依赖关系完成


依赖关系解决


====================================================================================================

 Package                    架构               版本                       源                   大小

====================================================================================================

正在安装:

 pcp-pmda-redis             x86_64             4.3.2-13.el7_9             updates              33 k

为依赖而安装:

 pcp-conf                   x86_64             4.3.2-13.el7_9             updates              37 k

 pcp-libs                   x86_64             4.3.2-13.el7_9             updates             467 k

 perl-PCP-PMDA              x86_64             4.3.2-13.el7_9             updates              63 k


事务概要

====================================================================================================

安装  1 软件包 (+3 依赖软件包)


总下载量:600 k

安装大小:1.3 M

Is this ok [y/d/N]: y

Downloading packages:

(1/4): pcp-conf-4.3.2-13.el7_9.x86_64.rpm                                    |  37 kB  00:00:00     

(2/4): pcp-pmda-redis-4.3.2-13.el7_9.x86_64.rpm                              |  33 kB  00:00:00     

(3/4): perl-PCP-PMDA-4.3.2-13.el7_9.x86_64.rpm                               |  63 kB  00:00:00     

(4/4): pcp-libs-4.3.2-13.el7_9.x86_64.rpm                                    | 467 kB  00:00:00     

----------------------------------------------------------------------------------------------------

总计                                                                941 kB/s | 600 kB  00:00:00     

Running transaction check

Running transaction test

Transaction test succeeded

Running transaction

  正在安装    : pcp-conf-4.3.2-13.el7_9.x86_64                                                  1/4 

  正在安装    : pcp-libs-4.3.2-13.el7_9.x86_64                                                  2/4 

  正在安装    : perl-PCP-PMDA-4.3.2-13.el7_9.x86_64                                             3/4 

  正在安装    : pcp-pmda-redis-4.3.2-13.el7_9.x86_64                                            4/4 

  验证中      : pcp-libs-4.3.2-13.el7_9.x86_64                                                  1/4 

  验证中      : pcp-pmda-redis-4.3.2-13.el7_9.x86_64                                            2/4 

  验证中      : pcp-conf-4.3.2-13.el7_9.x86_64                                                  3/4 

  验证中      : perl-PCP-PMDA-4.3.2-13.el7_9.x86_64                                             4/4 


已安装:

  pcp-pmda-redis.x86_64 0:4.3.2-13.el7_9                                                            


作为依赖被安装:

  pcp-conf.x86_64 0:4.3.2-13.el7_9                    pcp-libs.x86_64 0:4.3.2-13.el7_9              

  perl-PCP-PMDA.x86_64 0:4.3.2-13.el7_9              


完毕!


Python 全系列/第六阶段:数据库编程基础/Redis的使用 160楼
Python 全系列/第六阶段:数据库编程基础/Redis的使用 161楼
Python 全系列/第六阶段:数据库编程基础/项目-音乐播放器-旧 162楼
Python 全系列/第六阶段:数据库编程基础/项目-音乐播放器-旧 163楼
Python 全系列/第六阶段:数据库编程基础/python操作mysql 165楼

百战程序员微信公众号

百战程序员微信小程序

©2014-2024 百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637