【问题标题】:Adding external data to sql table将外部数据添加到 sql 表
【发布时间】:2020-12-27 07:37:59
【问题描述】:

我正在尝试从外部添加数据,但是当代码来到这里时,我收到错误。如何从外部添加数据?

我想要的只是有人将数据添加到表中。

def ogrencikaydi(self):
        print("*******ÖĞRENCİ KAYIT YERİ*******")
        isim=input("İSİM:")
        soyisim=input("SOYİSİM:")
        numara=input("NUMARA:")
        cinsiyet=input("CİNSİYET:")
    
        baglanti = sqlite3.connect("universite.db")
        imlec = baglanti.cursor()
  
        imlec.execute("INSERT INTO HACETTEPE VALUES(isim,soyisim,numara,cinsiyet)") #non-working part
        baglanti.commit()
        baglanti.close()
        self.menu()

【问题讨论】:

  • 如果只显示python 代码,为什么帖子会被标记为phpd?在提问之前请research,因为已经提出并回答了许多关于 Python-SQLite/DB 的插入数据问题。

标签: sql python-3.x sqlite


【解决方案1】:

查询存在结构问题。缺少要插入的数据。

一个查询必须遵循以下格式:

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

您的查询格式为:

INSERT INTO table_name                # columns declaration is missing
VALUES (value1, value2, value3, ...);

如果您使用该查询填充表的所有字段,则您使用的查询格式是有效的。可能会发生错误,因为您没有这样做。 参考这个article

在此之上,您使用的不是变量值,而是变量名称。 这是因为您没有使用字符串格式。 为此,请参阅此article

所以解决办法是:

query = "INSERT INTO HACETTEPE (isim,soyisim,numara,cinsiyet) VALUES(?,?,?,?)" 
imlec.execute(query, [isim,soyisim,numara,cinsiyet])

感谢@Parfait,我确实更新到了更安全的版本

【讨论】:

  • 警告:该解决方案对 SQL 注入开放,尤其是在用户输入的情况下。使用 parameterization 代替 sqlite3 支持。
  • 根据您的评论修改,我不知道。谢谢
猜你喜欢
  • 2014-11-27
  • 2022-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多