# Import libraries\nimport os, re, subprocess, pyautogui, time, datetime, io\nimport mysql.connector\nimport csv\n\n\nconnection = mysql.connector.connect(\n user="xxxxx", password="xxxxxx", host="192.168.0.6", database="xxx"\n)\n\ncur = connection.cursor(buffered=True)\n\ntable = "inmuebles"\n\nquery = "SELECT * FROM %s;" % table\n\ncur.execute(query)\n\nwith io.open("test.csv", "w", encoding="utf-8") as f:\n writer = csv.writer(f, delimiter=";")\n for row in cur.fetchall():\n writer.writerow(row)\n\nconnection.commit()\ncur.close()\nconnection.close()\n\n\n##############\n### IMPORT ###\n##############\n\nconnection = mysql.connector.connect(\n user="xxxxx", password="xxxxx", host="xxxxx", database="xxxx"\n)\n\ncur = connection.cursor(buffered=True)\n\nsql = "SELECT count(*) FROM inmuebles_test"\n\ntry:\n cur.execute(sql)\n results = cur.fetchall()\n for row in results:\n count = row[0]\n print("Initially there are %d rows in table" % (count))\n\nexcept:\n print("Error: unable to fetch data")\n\ncr = csv.reader(open("test.csv", "r", encoding="utf-8"), delimiter=";")\ni = 1\nnext(cr)\nfor row in cr:\n print(row)\n print("inserting row-%d into Db" % (i))\n # cur.execute("INSERT INTO inmuebles_test VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",row)\n # connection.commit()\n i = i + 1\n if i > 10:\n break\n\ntry:\n cur.execute(sql)\n results = cur.fetchall()\n for row in results:\n count = row[0]\n print("Finally there are %d rows in table" % (count))\n\nexcept:\n print("Error: unable to fetch data")\n\ncur.close()\nconnection.close()\nRun Code Online (Sandbox Code Playgroud)\n\n上面的代码导出到 csv 文件,然后尝试将其导入到不同服务器上的相同表。
\n\n# Import libraries\nimport os, re, subprocess, pyautogui, time, datetime, io\nimport mysql.connector\nimport csv\n\n\nconnection = mysql.connector.connect(\n user="xxxxx", password="xxxxxx", host="192.168.0.6", database="xxx"\n)\n\ncur = connection.cursor(buffered=True)\n\ntable = "inmuebles"\n\nquery = "SELECT * FROM %s;" % table\n\ncur.execute(query)\n\nwith io.open("test.csv", "w", encoding="utf-8") as f:\n writer = csv.writer(f, delimiter=";")\n for row in cur.fetchall():\n writer.writerow(row)\n\nconnection.commit()\ncur.close()\nconnection.close()\n\n\n##############\n### IMPORT ###\n##############\n\nconnection = mysql.connector.connect(\n user="xxxxx", password="xxxxx", host="xxxxx", database="xxxx"\n)\n\ncur = connection.cursor(buffered=True)\n\nsql = "SELECT count(*) FROM inmuebles_test"\n\ntry:\n cur.execute(sql)\n results = cur.fetchall()\n for row in results:\n count = row[0]\n print("Initially there are %d rows in table" % (count))\n\nexcept:\n print("Error: unable to fetch data")\n\ncr = csv.reader(open("test.csv", "r", encoding="utf-8"), delimiter=";")\ni = 1\nnext(cr)\nfor row in cr:\n print(row)\n print("inserting row-%d into Db" % (i))\n # cur.execute("INSERT INTO inmuebles_test VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)",row)\n # connection.commit()\n i = i + 1\n if i > 10:\n break\n\ntry:\n cur.execute(sql)\n results = cur.fetchall()\n for row in results:\n count = row[0]\n print("Finally there are %d rows in table" % (count))\n\nexcept:\n print("Error: unable to fetch data")\n\ncur.close()\nconnection.close()\nRun Code Online (Sandbox Code Playgroud)\n\n即使当我导入只有两列的表时,也会发生此错误,将第 70 行更改为以下内容:
\n\ncur.execute("INSERT INTO inmuebles_test (id, referencia) VALUES ( %s, %s )",row)\nRun Code Online (Sandbox Code Playgroud)\n\n如果我注释掉第 70-71 行,那么下面是在第 68 行上打印的行的示例:
\n\nNot enough parameters for the SQL statement\nRun Code Online (Sandbox Code Playgroud)\n
您需要提供与查询中使用的相同数量的参数来执行:
例如
cursor.execute("INSERT INTO table VALUES (%s, %s, %s)", (var1, var2, var3))
Run Code Online (Sandbox Code Playgroud)
此外,参数应该是元组或字典(而不是列表),如下所述:
该方法执行给定的数据库操作(查询或命令)。在元组或字典参数中找到的参数绑定到操作中的变量。
来源: https ://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html