无法通过Python和pymysql插入MySQL

时间:2013-04-24 19:39:15

标签: python mysql pymysql

我有一个包含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,))

顺利工作。这是正确的,还是我很幸运?

2 个答案:

答案 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;符号。我强烈建议在执行查询之前进行打印。