MySQL / Python INSERT INTO语句问题

时间:2018-06-19 16:55:51

标签: python mysql database

我正在尝试通过python测试将数据添加到数据库中。我已经认识到许多人对“ INSERT INTO”语句有疑问,我也有。我收到了一系列错误,随后多次更改了语法,然后收到新错误。

目前,我将其作为声明:

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

位置:

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

运行代码将输出标准1064 MySQL错误。

如果有人可以向我解释那很棒的标准语法,因为我似乎在任何地方都找不到它。

4 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

尝试一下。我更改了%-> ,并在末尾添加了值

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

答案 2 :(得分:0)

感谢您的回答,但找到了解决方法。我最终将数据库中的行更改为“ Column1”而不是“ Column 1”,这解决了该问题。

 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'") #arguement 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()

答案 3 :(得分:0)

永远不是解决这些问题的最佳方法,但始终可以使用"".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()。干杯!