【问题标题】:SQL Auto-increment ID pythonSQL自增ID python
【发布时间】:2018-04-17 02:41:12
【问题描述】:

我正在编写一个程序,可以将面包添加到 Oracle 11g 数据库中。到目前为止,我的代码允许我手动添加 ID,但添加时应该自动递增,因此不需要 ID。

    BreadID = int(input("Enter the bread ID: "))
    Name = input("Please enter the name for the new bread: ")
    LoafPrice = int(input("Enter the price in pence: "))
    Calories = int(input("Enter the calories: "))
    cur.execute("INSERT INTO BREAD VALUES (:BID,:BName,:BCal,:BPrice)",{'BID':BreadID, 'BName':Name, 'BPrice':LoafPrice,  'BCal':Calories,})
    con.commit()

这是我手动添加的代码。我在网上搜索了如何添加自动增量的答案,但都未能为我提供错误和更多问题。

我在网上看到,只留下 ID 列将允许自动递增,但我得到这个“ORA-00947:没有足够的值”,即使我已经指定了列名。

感谢任何帮助,因为我已经坚持了一段时间了。:)

【问题讨论】:

  • 如您所说,它应该与离开 ID 列一起使用。你确定你在两个地方都留空了吗,我的意思是 VALUES() 和 {}?
  • 是肯定的。这就是我所拥有的 'cur.execute("INSERT INTO BREAD VALUES (:BName,:BCal,:BPrice)",{'BName':Name, 'BPrice':LoafPrice, 'BCal':Calories,})' 和我收到错误“ORA-00947:没有足够的值”。

标签: python sql python-3.x oracle oracle11g


【解决方案1】:

我之前也遇到过同样的问题,请尝试在 SQL 表达式中指定列名并将 BreadID 设为 NULL。

所以 sql 表达式看起来像:

INSERT INTO BREAD (BID, BName, BCal, BPrice)
VALUES
(NULL, 'French Toast', 0, 100);

希望对你有帮助!

【讨论】:

  • 您好,谢谢,我试过了。看起来像这样' cur.execute ("INSERT INTO BREAD (BID, BName, BCal, BPrice) VALUES", {NULL, 'Name', 'LoafPrice', 'Calories'}) ' 我认为是对的吗? (对不起,如果不是,这有点新)我收到错误'名称'NULL'未定义'。谢谢
  • @RexRichards这里的NULL应该是带有sql语句的字符串,而不是变量,所以应该是这样的:"INSERT INTO BREAD (BID, BName, BCal, BPrice) VALUES (NULL, :BName,:BCal,:BPrice)", {'Name', 'Price', 'Calories'}
  • 啊,好吧,现在更有意义了,不像这个新错误那么多。' TypeError: expecting a dictionary, sequence or keyword args ' 哈哈 谢谢你到目前为止的帮助 :)跨度>
  • @RexRichards 哦,对不起,变量应该是字典,"INSERT INTO BREAD (BID, BName, BCal, BPrice) VALUES (NULL, :BName,:BCal,:BPrice)", {'BID': 'Name', 'BPrice': 'Price', 'BCal': 'Calories'},这对你有用吗?
  • 很遗憾,我收到此错误“ORA-01036:非法变量名/编号”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-05
  • 2018-08-06
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
相关资源
最近更新 更多