我有一个有9列的表,前3列都是文本,后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,))
工作顺利。这是对的,还是我只是很幸运?
怎么样
假设列名是'Left Avg',作为一般规则,您可能应该尽量避免列名中的空格
在Python中插入的简单方法是使用连接字符串。像这样的:
但要注意“和”的符号。我强烈建议在执行查询之前打印。
在回答最后一个问题时:你很幸运,并且/或者你发现或记住了用python方法进行SQL查询。您可以在
site-packages/pymysql/tests/test_basic.py
中看到类似的示例,例如:相关问题 更多 >
编程相关推荐