我有一个包含9列的表,前三个都是文本,最后6个是设置为INT。
当我插入文本字段时,一切都按预期工作
conn = pymysql.connect(host='', port=, user='', passwd='', db='')
cur = conn.cursor()
cur.execute("INSERT INTO table(Name) VALUES ('Sample Name')")
该代码运行正常,并允许我将名称插入我的数据库。但是,当为我的整数运行一个insert语句时,我遇到了各种各样的麻烦。
我尝试了以下所有方法:
cur.execute("INSERT INTO table(Left Avg) VALUES (5)")
cur.execute("INSERT INTO table(Left Avg) VALUES (%s)", (5))
cur.execute("INSERT INTO table(Left Avg) VALUES (%s)" % (5))
cur.execute("""INSERT INTO mlb_data(Left Avg) VALUES (%s)""" % (5))
基本上无论我在将整数插入表格时尝试什么,都会出现以下错误。
Traceback (most recent call last):
File "testing.py", line 12, in <module>
cur.execute("""INSERT INTO mlb_data(Left Avg) VALUES (%s)""" % (5))
File "build/bdist.macosx-10.7-intel/egg/pymysql/cursors.py", line 117, in execute
File "build/bdist.macosx-10.7-intel/egg/pymysql/connections.py", line 189, in defaulterrorhandler
pymysql.err.ProgrammingError: (1064, u"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Left Avg) VALUES (5)' at line 1")
我试图将MySQl平板电脑更改为VarChar而不是INT,但无论何时我尝试插入数字都会出错。
我在这里缺少什么?
编辑: 我不知道我之前是否没有尝试过,或者我的格式不正确但是我想出来了。
num = 5.23947824987
cur.execute("INSERT INTO mlb_data(LeftAvg) VALUES (%s)", (num,))
顺利工作。这是正确的,还是我很幸运?
答案 0 :(得分:1)
怎么回合
cur.execute("INSERT INTO table(`Left Avg`) VALUES (?)", (5,))
假设'Left Avg'是列名,您应该尽量避免列名中的空格作为一般规则
答案 1 :(得分:-3)
Python中 INSERT 的简单方法是使用连接字符串。像这样:
id_user = 1
username = "Tudor"
address = "Cluj-Napoca"
sql = "INSERT INTO user(id_user,username,address) VALUES (" + id_user + ",'" + username + "','" + address + "');"
cursor.execute(sql)
但是很多关注&#34;和&#39;符号。我强烈建议在执行查询之前进行打印。