【问题标题】:Using user input to find information in a Mysql database使用用户输入在 Mysql 数据库中查找信息
【发布时间】:2008-12-22 22:37:08
【问题描述】:

我需要使用 python 设计一个程序,它会要求用户输入条形码。然后,使用这个条形码,它将搜索一个 mysql 以找到其对应的产品。

我对如何开始有点困惑。有没有人给我一些建议?

【问题讨论】:

    标签: python sql user-input


    【解决方案1】:

    使用python-mysql。它是一个dbapi-compatible 模块,可让您与数据库对话。

    import MySQLdb
    
    user_input = raw_input("Please enter barcode and press Enter button: ")
    
    db = MySQLdb.connect(passwd="moonpie",db="thangs")
    mycursor = db.cursor()
    mycursor.execute("""SELECT name, price FROM Product
                     WHERE barcode = %s""", (user_input,))
    
    # calls fetchone until None is returned (no more rows)
    for row in iter(mycursor.fetchone, None):
        print row
    

    如果您想要更高级的东西,请考虑使用SQLAlchemy 作为层。它可以让你这样做:

    product = session.query(Product).filter(Product.barcode == user_input).scalar()
    print product.name, product.price
    

    【讨论】:

    • 您能解释一下第一个代码示例中的 for 语句吗?谢谢。
    • @nosklo:我现在明白了。我认为 fetchone 返回第一条记录或 None 就是这样。无论如何,我查看了 DB API,我很好奇:MySQLdb 不支持对游标的迭代,例如“我的光标中的行”?
    • @Cristian:我不使用 MySQLdb,也没有安装它。 MySQLdb 文档什么也没说。也许你应该试试看。 iter(cursor.fetchone, None) 可以在任何兼容 DBAPI2.0 的驱动程序上运行,所以我更喜欢使用它。
    • @nosklo:我明白了。谢谢你的成语。
    【解决方案2】:

    条形码只是一系列字符(字母数字)的图形表示

    因此,如果您有一种方法让用户输入此代码(条形码扫描仪),那么它只是查询 mysql 数据库中字符串的问题。

    【讨论】:

      【解决方案3】:

      这是一个非常模棱两可的问题。根据您实际想要做的事情,您可以通过多种方式完成您想要做的事情。

      您的用户将如何输入条形码?他们会使用条形码扫描仪吗?他们是否手动输入条形码编号?

      这是要在台式机/笔记本电脑上运行还是要在手持设备上运行?

      条形码扫描仪是存储条形码以供以后检索,还是直接将它们发送到计算机。它会通过 USB 电缆还是无线发送?

      【讨论】:

        【解决方案4】:

        首先,将条形码输入视为纯旧文本。

        自从我使用条形码扫描仪以来已经有一段时间了,但我怀疑它们已经发生了很大变化,旧的过去只是搭载键盘输入,所以从编程的角度来看,最终结果是一个流键盘缓冲区中的字符,无论是键入还是扫描都没有区别。

        如果您的目标设备与此不同,您将需要编写一些东西来处理它,然后再进行数据库查询。

        如果您有其中一种设备可以玩,请将其插入,启动记事本,开始扫描一些条形码,看看会发生什么。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-02
          相关资源
          最近更新 更多