Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法通过Python和pymysql插入MySQL_Python_Mysql_Pymysql - Fatal编程技术网

无法通过Python和pymysql插入MySQL

无法通过Python和pymysql插入MySQL,python,mysql,pymysql,Python,Mysql,Pymysql,我有一个9列的表,前三列都是文本,后六列设置为INT 当我在文本字段中插入时,一切正常 conn = pymysql.connect(host='', port=, user='', passwd='', db='') cur = conn.cursor() cur.execute("INSERT INTO table(Name) VALUES ('Sample Name')") 该代码运行良好,允许我将名称插入数据库。然而,当为整数运行insert语句时,我遇到了各种各样的麻烦 我尝试了以下

我有一个9列的表,前三列都是文本,后六列设置为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")
工作顺利。这是对的,还是我运气好呢?

怎么样

cur.execute("INSERT INTO table(`Left Avg`) VALUES (?)", (5,))

假设“Left Avg”是列名,您可能应该尽量避免在列名中使用空格,这是一条一般规则

在Python中插入的简单方法是使用连接字符串。大概是这样的:

id_user = 1
username = "Tudor"
address = "Cluj-Napoca"
sql = "INSERT INTO user(id_user,username,address) VALUES (" + id_user + ",'" + username + "','" + address + "');"
cursor.execute(sql)

但是要注意“and”符号。我强烈建议在执行查询之前打印出来。

回答您的最后一个问题:您运气好,并且/或者您已经想出或记住了进行SQL查询的python方法。您可以在
站点包/pymysql/tests/test\u basic.py
中看到类似的示例,例如:

            v = (True, -3, 123456789012, 5.7, "hello'\" world", u"Espa\xc3\xb1ol
", "binary\x00data".encode(conn.charset), datetime.date(1988,2,2), datetime.date
time(2014, 5, 15, 7, 45, 57), datetime.timedelta(5,6), datetime.time(16,32), tim
e.localtime())
            c.execute("insert into test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) 
values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", v)

好的,我试过了(谢谢你的回答,顺便说一下),我把列名改成了LeftAvg(去掉了空格),但现在我得到了以下错误。
文件“testing.py”,第11行,cur.execute(“INSERT-INTO-mlb_-data('LeftAvg')value(?),(5,))文件“build/bdist.macosx-10.7-intel/egg/pymysql/cursors.py“,第105行,在执行类型错误:并非所有参数在字符串格式化过程中转换
尝试删除列名周围的
。在MySQL中,转义字符是'why(5,)?不应该是(5)吗?只是为了清楚。。。更清楚的是,传递元组是一种不好的做法,因为这会让你更容易理解
            v = (True, -3, 123456789012, 5.7, "hello'\" world", u"Espa\xc3\xb1ol
", "binary\x00data".encode(conn.charset), datetime.date(1988,2,2), datetime.date
time(2014, 5, 15, 7, 45, 57), datetime.timedelta(5,6), datetime.time(16,32), tim
e.localtime())
            c.execute("insert into test_datatypes (b,i,l,f,s,u,bb,d,dt,td,t,st) 
values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)", v)