我正在尝试通过python测试将数据添加到数据库中。我已经认识到许多人对“ INSERT INTO”语句有疑问,我也有。我收到了一系列错误,随后多次更改了语法,然后收到新错误。
目前,我将其作为声明:
cursor.execute("""INSERT INTO test (Column 1,Column 2) VALUES (%s,%s)"""% arg)
位置:
arg=("'5','2'")
运行代码将输出标准1064 MySQL错误。
如果有人可以向我解释那很棒的标准语法,因为我似乎在任何地方都找不到它。
答案 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()
。干杯!