【问题标题】:Is there a way to take user input and match it to a value PYTHON SQL有没有办法接受用户输入并将其与值 PYTHON SQL 匹配
【发布时间】:2020-11-10 15:41:52
【问题描述】:

所以我做了一个数据库来存储员工,我在我的数据库中的值是:

  • Eno(员工 ID)
  • 框架(名字)
  • 工资
  • 性别(男性或女性)

我正在尝试将数据从 python 输入更新到我的 sql 数据库。 所以基本上我要求用户从列表中选择 Eno(在数据库中显示行) 如果他们的输入是有效的 Eno,那么数据库将提取有关该员工的信息。 到目前为止我的代码如下:

change = input("Enter the Employee Number To Make Changes") 
mycursor.execute("SELECT Eno FROM Employees WHERE 10 <= 15")
record = mycursor.fetchall()'                                
for x in record:                                           
    print(x)

我的输出是:

Enter the Employee Number To Make Changes
(36,)
(37,)
(38,)
(39,)
(40,)

感谢所有帮助!

【问题讨论】:

  • database 是一个通用概念,你的 DBMS 是什么,每个都有自己的方言..?
  • 外部 Dmbs,使用 sql 存储从 python3 中用户输入解释的数据

标签: python sql python-3.x database


【解决方案1】:

假设一切正常,您的问题需要更多信息。您可以使用以下方式更新数据:

cursor.execute('''
                UPDATE DatabaseName.TableName
                SET frame = 'DV', salary = 'DV', sex = 'DV'
                WHERE Eno = 'required employee id'
                ''')
conn.commit()

DV 指的是您的期望值,希望对您有所帮助。

【讨论】:

  • 我的执行工作很完美,但是我遇到了一个情况,如果有两个名为 Ryan 的用户,它会同时改变他们。我的方法是选择重复的用户并区分他们的 id 以进行更改
  • 我认为您的问题更多是数据库设计,请确保您的主键是人的 id Eno 而不是名称 frame,因为在大多数情况下重复名称是一种常见情况表,强烈建议不要依赖。 提示:您可以使用SELECT * FROM.TableName WHERE Eno = 'required employee id' 获取重复名称,然后根据此查询返回的内容进行更新。 @RyanO'Riordan
  • 很高兴它有帮助,请点击绿色复选标记以帮助社区尽快找到答案。
  • 好的,我真的不知道如何用语言表达,但我开始了。因此,由于我所有的员工都在数据库表中,他们的属性 fname 工资性别,例如,如果我想将 john 的性别从男性更改为女性,我将如何处理这个问题,因为目前当我执行代码时它正在将每个男性都更改为女性
  • 如果将每个男性都更改为女性,请确保:1)您的主键是 id 2)您有每个雇主的 唯一 ID。如果那没有帮助,请发布您的数据库的两行示例。 @RyanO'Riordan
【解决方案2】:

如果我理解正确,您正在尝试从您的 python 脚本更新您的 SQL 数据库。

要获取有效条目列表,您需要从元组中提取员工编号。

change = input("Enter the Employee Number To Make Changes") 
mycursor.execute("SELECT Eno FROM Employees WHERE 10 <= 15")
record = mycursor.fetchall()'                                
records = [str(x[0]) for x in record]

# Check valid entry
if change in records:
   # Set up a dictionary
   changes = dict()
   fields = ["frame","salary","sex"]
   for f in fields:
      value = input("{}: ".format(f))
      changes[f] = value
   # Do the SQL stuff
   mycursor.execute("""
      UPDATE Employees
      SET {} = {}, {} = {}, {} = {}
      WHERE Eno = {}
      """.format(fields[0],changes[fields[0],fields[1],changes[fields[1],fields[2],changes[fields[2],change))

else:
   # insert some error handling...

...或类似的东西。

有帮助吗?

【讨论】:

  • 天哪,这是一个非常好的概念。我在 sql 中遇到的唯一其他错误是。您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 '{} = {}、{} = {}、{} = {} WHERE Eno = {}' 附近使用正确的语法
  • 检查 SQL 语句正在创建它应该作为字符串做什么,我没有检查我必须承认的那一点
猜你喜欢
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 2023-02-24
相关资源
最近更新 更多