当我尝试将 csv 导入 MYSQLdb 时,Python“命令不同步”错误消息
Posted
技术标签:
【中文标题】当我尝试将 csv 导入 MYSQLdb 时,Python“命令不同步”错误消息【英文标题】:Python "commands out of sync" error message when I am trying to import csv to MYSQLdb 【发布时间】:2018-01-02 20:52:10 【问题描述】:当我想在 Python 2.7 中执行我的 sqldb 代码时收到此错误消息:
Traceback (most recent call last):
File "C:/Python27/air18-mysql.py", line 52, in <module>
cursor.execute(query)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 221, in execute
if not self._defer_warnings: self._warning_check()
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 107, in _warning_check
warnings = self._get_db().show_warnings()
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 371, in show_warnings
self.query("SHOW WARNINGS")
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 282, in query
_mysql.connection.query(self, query)
ProgrammingError: (2014, "Commands out of sync; you can't run this command now")
我的相关代码如下:
connection = MySQLdb.connect(host='localhost',
user='root',
passwd='1234',
db='database')
cursor = connection.cursor()
query = """
CREATE TABLE `test` (
`A` varchar(100) DEFAULT NULL,
`B` varchar(100) DEFAULT NULL,
`C` varchar(100) DEFAULT NULL,
`D` varchar(100) DEFAULT NULL,
`E` varchar(100) DEFAULT NULL,
`F` varchar(100) DEFAULT NULL,
`G` varchar(100) DEFAULT NULL,
`ID` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8"""
cursor.execute(query)
connection.commit()
cursor.close()
connection = MySQLdb.connect(host='localhost',
user='root',
passwd='1234',
db='database')
cursor = connection.cursor()
query = """ load data local infile 'C:/Python27/output.csv'
into table test
character set latin1
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n';
ignore 1 lines;
"""
cursor.execute(query)
connection.commit()
cursor.close()
有人知道我做错了什么吗?
我也用另一个 csv 尝试过它,它工作正常。 也许我的 csv 文件有问题,或者我无法想象这是什么问题。
这是我的 csv 文件的一部分(在 NotePad++ 中):
"apple apricot";" avocado";"blackcurrant (fruit)-";"blackberry";"blueberry (fruit) ";"";"lemon lime"
"quince pear";" banana";"papaya (fruit)-";"orange";"passion fruit (fruit) ";"";"pineapple watermelon"
【问题讨论】:
不确认但是,您可以尝试在第二次创建连接时将连接更改为connection1并将光标更改为cursor1。同connection1 = MySQLdb.connect(host='localhost', user='root', passwd='1234', db='database') cursor1 = connection1.cursor()
我试过了,我也遇到了同样的问题
第 52 行是什么?
cursor.execute(query)
您是否尝试过手动执行此操作?如果不尝试直接在mysql服务器中手动创建和插入相同的内容?
【参考方案1】:
在柠檬酸橙和菠萝西瓜之后,你少了一个半冒号。试试这个:
"apple apricot";" avocado";"blackcurrant (fruit)-";"blackberry";"blueberry (fruit) ";"";"lemon lime";"quince pear";" banana";"papaya (fruit)";"orange";"passion fruit (fruit) ";"";"pineapple watermelon";
【讨论】:
但是柠檬线和菠萝西瓜是我的线的末端(这是一个网络抓取数据),所以如果我想修改 csv 会更加自满。我认为有一种直接将其读入 mysqldb 的好方法,但我不知道为什么会收到此错误消息.. 如果您不能保证CSV的结构/格式,并且如果有轻微的CSV无效的可能性,则以编程方式读取CSV并格式化,然后将其导入数据库以上是关于当我尝试将 csv 导入 MYSQLdb 时,Python“命令不同步”错误消息的主要内容,如果未能解决你的问题,请参考以下文章
Python 导入 MySQLdb 错误 - Mac 10.6
“将CSV导入Blender时无法将字符串转换为float”
与从 CSV 文件导出和导入相比,Python MySQLdb SScursor 速度较慢。可以加速吗?
Python MySQLdb 转义字符:查询在 MySQL 中有效,但在 python MySQLdb 中无效