【问题标题】:Inserting a SQL Query from Python [duplicate]从 Python 插入 SQL 查询 [重复]
【发布时间】:2022-01-20 13:39:15
【问题描述】:

我正在尝试在存储员工信息的类中创建一个 def。我无法将数据添加到表中。我不太确定我哪里出错了,在查看其他帖子后我似乎无法找到解决方案。

    def create_db(self):
        name = input('Enter first name: ')
        surname = input('Enter last name: ')
        age = int(input('Enter age: '))
        email = input('Enter e-mail address: ')
        number = int(input('Enter number: '))
        country = input('Enter country: ')
        city = input('Enter city: ')
        id = random.randint(0,9999)

        query = "INSERT INTO employees (id, name, surname, age, email, number, country, city) VALUES (%s, %s)"
        value = f"'{id}', '{name}', '{surname}', '{age}', '{email}', '{number}', '{country}', '{city}'"
        self.mycursor.execute(query, value,)
        self.db.commit()

我认为这与最后 4 行有关,但可能不正确。感谢您提前提供任何帮助。

【问题讨论】:

  • 这是作业吗?是否有任何堆栈跟踪、错误日志等?需要的不仅仅是代码。
  • 如果您解释一下您用于连接数据库的库类型,您使用的数据库以及错误消息是什么,将会有所帮助。
  • value 应该是要插入的值的 tuplelist。在 SQL 语句中,%s 占位符的数量应该等于值的数量。有关这方面的更多信息,请参阅链接的副本。
  • 对不起,我正在使用 MySQL 连接器,我现在遇到的问题是它运行但不提交到本地主机服务器。

标签: python mysql sql database


【解决方案1】:

你是如何格式化这些值的??

        query = "INSERT INTO employees (id, name, surname, age, email, number, country, city) VALUES (%s, %s)"
        value = f"'{id}', '{name}', '{surname}', '{age}', '{email}', '{number}', '{country}', '{city}'"
        self.mycursor.execute(query, value,)
        self.db.commit()

你试过这个吗?

values = f"'{id}', '{name}', '{surname}', '{age}', '{email}', '{number}', '{country}', '{city}'"
# note the formatting
query = f"INSERT INTO employees (id, name, surname, age, email, number, country, city) VALUES ({values})" # note the f-string expression
self.mycursor.execute(query)
self.db.commit()

【讨论】:

  • 那行得通,谢谢,我认为这与查询上方的值部分有关,然后将其添加到查询中?我还有一个问题,就像我输入的数据没有提交到 SQL 本地主机服务器一样。
  • 好的?不应该是self.mycursor.commit()
  • 试过了,得到错误 AttributeError: 'CMySQLCursor' object has no attribute 'commit'
猜你喜欢
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多