mysql/python插入语句问题

h79rfbju  于 2021-06-20  发布在  Mysql
关注(0)|答案(4)|浏览(550)

我正在尝试通过python向数据库添加数据。我认识到许多人对“insert into”语句有异议,我也有异议。我收到了一系列错误,随后多次更改语法,然后收到新的错误。
目前,我有以下声明:

cursor.execute("""INSERT INTO test (Column 1,Column 2) VALUES (%s,%s)"""% arg)

哪里:

arg=("'5','2'")

运行代码输出标准的1064mysql错误。
如果有人能给我解释一下标准语法,那就太好了,因为我好像到处都找不到。

vddsk6oq

vddsk6oq1#

试试这个。我换了衣服 % -> , 并在末尾添加值

cursor.execute("""INSERT INTO test (`Column 1`,`Column 2`) VALUES (%s,%s)""", (5,2))
l3zydbqr

l3zydbqr2#

这从来不是解决这些问题的最佳方法,但使用 "".join(string) ```
arg=(5,2)
query = "".join(["INSERT INTO test (Column 1,Column 2) VALUES (" , str(arg[0]), ", ", str(arg[1]),")"])
query

Out[25]: 'INSERT INTO test (Column 1,Column 2) VALUES (5, 2)'

然后你呢 `execute()` 是的。干杯!
wbgh16ku

wbgh16ku3#

我很感激你的回答,但我找到了解决办法。最后,我将db中的行改为“column1”而不是“column1”,这样就解决了问题。

import MySQLdb as mariadb

db = mariadb.connect(host="", user="root", passwd="", db="")
 cursor = db.cursor()
 sql = "INSERT INTO test (Column 1,Column 2) VALUES (%s,%s)"

# sqltime=datetime.now().strftime('%Y-%m-%d %H:%M:%S')

arg = ('5',"'2'") #argument input 

 try:
  cursor.execute("""INSERT INTO test (Column1,Column2) VALUES (%s,%s)"""% arg)  
db.commit()
except:
cursor.execute('show profiles')
for row in cursor:
    print(row)
raise
db.close()
bakd9h0s

bakd9h0s4#

如果字段或表的名称中有空格或其他特殊字符,则需要用``分隔。

INSERT INTO test (`Column 1`,`Column 2`) ...

这也是一个很好的习惯,因为它可以防止使用可能与保留或关键字混淆的标识符来诊断困难的问题。

相关问题