weixin_43405952 2023-12-28 15:51 采纳率: 83.3%
浏览 8
已结题

数据统计用的sql语句有问题,请教。

在做一个python数据统计的程序,发现SQL语句有问题,最后运行结果与需求相距甚远。代码如下,个人认为是第一个备注处有问题,请大家看看,该怎么改?


import sqlite3
class hx():
    def sy_1(self,pm,dh):
        db=sqlite3.connect("C:\\Users\\sai\\Desktop\\kw\\kw.db")
        c=db.cursor()
        sy=c.execute("select hszj+yf_dd-yf_sf-(select cb from sp where pm=?) from ss where dh=?",(pm,dh))
        for sy_1 in sy:
            print (sy_1)
        db.commit()
        db.close()
    def sy_2(self,qs,zz):
        db=sqlite3.connect("C:\\Users\\sai\\Desktop\\kw\\kw.db")
        c=db.cursor()
        sy=c.execute("select sum(sy) from ss where sj>=? and sj<=?",(qs,zz))
        for sy1 in sy:
            print(sy1)
        db.commit()
        db.close()
    def pm(self):
        qs2=input("起始时间:")
        zz2=input("终止时间:")
        qs21="\"%s\""%qs2
        zz21="\"%s\""%zz2
        rh=[]
        zs=[]
        zz=[]
        zg=[]
        s1={'md':None,'sl':None}
        db=sqlite3.connect("C:\\Users\\sai\\Desktop\\kw\\kw.db")
        c=db.cursor()
        pm=c.execute("select pm from ss where sj>=? and sj<=?",(qs21,zz21)) #搜索结果只有一个,应该是输入的日期格式不对。
        db.commit()
        for pm1 in pm:
            md=c.execute("select md from sp where pm=?",(pm1))
            for md1 in md:
                s1['md']=md1[0] #查询输出为元组,这才是正确的调用方式。
            db.commit()
            sl=c.execute("select sum(sl) from ss where pm=?",(pm1))
            for sl1 in sl:
                s1['sl']=sl1[0]
            db.commit()
            if s1['md']=="自购": 
                zg.append(s1['sl'])
            elif s1['md']=="书摊入货":
                rh.append(s1['sl'])
            elif s1['md']=="别人赠送处理":
                zs.append(s1['sl'])
            elif s1['md']=="自制":
                zz.append(s1['sl'])
        zg_z=sum(zg)
        rh_z=sum(rh)
        zs_z=sum(zs)
        zz_z=sum(zz)
        print ("自购:%i"%zg_z)
        print ("书摊入货:%i"%rh_z)
        print ("别人赠送处理:%i"%zs_z)
        print ("自制:%i"%zz_z)
        db.close()
a=hx()
xz=input("1,单笔收益计算\n2,时间段收益\n3,自购和入货的商品销售情况\n")
if xz=="1":
    pm1=input("商品名称:")
    dh1=input("单号")
    a.sy_1(pm1,dh1)
elif xz=="2":
    qs1=input("起始时间:")
    zz1=input("终止时间:")
    a.sy_2(qs1,zz1)
elif xz=="3":
    a.pm()

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-28 18:26
    关注

    【相关推荐】



    • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7754332
    • 这篇博客你也可以参考下:Python数据库 -- 查询结果处理、SQL表内数据去重
    • 您还可以看一下 武鹏老师的Python编程基础入门课程中的 SQL语言初学_2小节, 巩固相关知识点
    • 除此之外, 这篇博客: python操作数据库及并封装数据库函数中的 9.整体流程整理:连接数据库-建立游标-增删改查sql-执行sql(与客户端建立连接,execute执行)-如果对数据库存在变更,需要提交事务commit-关闭游标-关闭数据库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
      """
      数据库信息
      host = 
      port = 
      user = 
      pwd = 
      """
      import pymysql
      
      # 第一步:连接到数据库
      conn = pymysql.connect(host="",
                             port=,
                             user="",
                             password='',
                             charset="utf8")
      
      # 第二步:创建一个游标对象
      cur = conn.cursor()
      
      # 第三步:执行sql语句
      # sql = "select id from futureloan.member where mobile_phone='13367899876'"
      sql = "select * from futureloan.member limit 100"
      
      # 返回的是查询的数据条数
      res = cur.execute(sql)
      print(res)
      
      # 第四步:获取查询的数据
      # 获取一条数据(返回的查询集中的第一条数据,元组类型)
      data = cur.fetchone()
      print(data)
      
      # 获取查询集中的所有数据
      datas = cur.fetchall()
      print(datas)
      
      # 关于增加,删除,修改等相关涉及到数据库中数据变动的sql
      # 执行的方式和查询是一样的
      # cur.execute(sql)
      # 在执行完sql语句之后,要多出一步:commit提交事务
      # conn.commit()
      
      
      # pymysql    操作sql server
      # cx_oracle:操作oracel
      

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月13日
  • 已采纳回答 1月5日
  • 创建了问题 12月28日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上