簡體   English   中英

在Python中將數據從MySQL導出到CSV

[英]Exporting data from MySQL into CSV in Python

import mysql.connector

sql = "SELECT r.sensorID, s.area, r.date, r.Time, r.waterLevel, r.redalert FROM sensor s INNER JOIN rainfall r ON s.sensorID = r.sensorID ORDER BY r.date, Time INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/rainDB.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';"

mycursor.execute(sql)

我想在我的 Python IDE 中執行上面的代碼,將數據導出到一個 CSV 文件中。 select 語句在 MySQL 工作台中運行良好。 但是,當我在 Pycharm 中嘗試時,我不斷收到以下錯誤:

File "C:/Users/user/PycharmProjects/pythonProject1/BIrainSensor.py", line 106
    sql = "SELECT r.sensorID, s.area, r.date, r.Time, r.waterLevel, r.redalert FROM sensor s INNER JOIN rainfall r ON s.sensorID = r.sensorID ORDER BY r.date, Time INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/rainDB.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';"
                                                                                                                                                                                                                                                                                                                         ^
SyntaxError: unexpected character after line continuation character

我認為這是由於引號內的反斜杠 n (\n)。 有沒有辦法解決這個問題,或者我應該找到另一種方法將數據導出到 CSV 文件中。

您需要添加\ (反斜杠)以轉義" (因為您使用它來定義查詢字符串)和\字符。

請參考 Python String and Bytes literals https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals

例子:

sql = "SELECT r.sensorID, s.area, r.date, r.Time, r.waterLevel, r.redalert FROM sensor s INNER JOIN rainfall r ON s.sensorID = r.sensorID ORDER BY r.date, Time INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/rainDB.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\\n'"

或者更好的是,您可以使用帶前綴字母“r”的三引號字符串將其標記為原始字符串。 這樣你就可以避免 escaping 個字符:

sql = r"""SELECT r.sensorID, s.area, r.date, r.Time, r.waterLevel, r.redalert
FROM sensor s
INNER JOIN rainfall r ON s.sensorID = r.sensorID
ORDER BY r.date, Time
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/rainDB.csv'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n'
"""

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM