mysql连接器加载语句在错误的目录窗口中搜索

vnzz0bqm  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(560)

使用代码:

  1. import mysql.connector
  2. cnx = mysql.connector.connect(user='usr', password='pswd',
  3. host='127.0.0.1',
  4. database='db')
  5. cursor = cnx.cursor()
  6. cursor.execute(
  7. "LOAD DATA INFILE 'C:\\Users\\user\\Documents\\csvFiles\\Lamborghini-data.csv' "
  8. "INTO TABLE lamborghini "
  9. "FIELDS TERMINATED BY ',' "
  10. "ENCLOSED BY '\"' "
  11. "LINES TERMINATED BY '\\n' "
  12. "IGNORE 1 ROWS "
  13. "(model_year, make, model, model_info, price, status, auction_location, auction_year);"
  14. )

我成功地连接到数据库,但load语句出于某种原因查找“c:\xampp\mysql\data…”中的文件,而不是指定的路径。
错误如下:

  1. Traceback (most recent call last):
  2. File "createAndLoadDB.py", line 42, in <module>
  3. "LOAD DATA INFILE 'C:\\Users\\david\\Documents\\MecumProject2\\MecumScraper\\csvFiles\\Lamborghini-data.csv' "
  4. File "C:\Users\david\Anaconda3\envs\MecumDBEnv\lib\site-packages\mysql\connector\cursor.py", line 566, in execute
  5. self._handle_result(self._connection.cmd_query(stmt))
  6. File "C:\Users\david\Anaconda3\envs\MecumDBEnv\lib\site-packages\mysql\connector\connection.py", line 549, in cmd_query
  7. result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query))
  8. File "C:\Users\david\Anaconda3\envs\MecumDBEnv\lib\site-packages\mysql\connector\connection.py", line 438, in _handle_result
  9. raise errors.get_exception(packet)
  10. mysql.connector.errors.DatabaseError: 29 (HY000): File 'C:\xampp\mysql\data\UsersdavidDocumentsMecumProject2MecumScrapercsvFilesLamborghini-data.csv' not found (Errcode: 2 "No such file or directory")

它似乎要从我指定的文件中删除“\”,并在“c\xampp\mysql\data…”中搜索它。
如果语句在.sql文件中,我可以成功地执行该语句,但是在python脚本mysql.connector中使用它时会抛出上述错误。

pdsfdshx

pdsfdshx1#

为什么文件路径以 C:\xampp\mysql\data\ ?
这个问题与你的 secure_file_priv . 例如,我的 my.ini

  1. [mysqld]
  2. secure_file_priv = "D:\MySQL\datas"

所以我只能在 D:\MySQL\datas . 但你可以设定 secure_file_priv = "" 禁用此选项。
如何停止从我指定的文件中删除“\”?
添加 r 在你的绳子前面,你需要继续使用 \\ . 为什么会这样,可能是因为多次传递,字符串从python传递到mysql。

  1. r"""LOAD DATA INFILE 'C:\\abc\\def.csv'
  2. INTO TABLE test
  3. FIELDS TERMINATED BY ','
  4. ENCLOSED BY '\"'
  5. LINES TERMINATED BY '\n'
  6. IGNORE 1 ROWS
  7. (col);"""
展开查看全部

相关问题