データベースから印刷するときに奇妙なエラーが発生しました。問題がPythonのデコードなどに起因するのかどうかは不明です。私は(「」)sys.stdout.writeを使用しようとした同様の出力問題をmysqlcursorを使用して最初の文字を上書きするPythonの印刷機能
を有し*更新1 PowerShellが同じ出力を有し、windowsizeを変化させることが見出さ全く影響http://imgur.com/a/eWnpP
*アップデート2 解決策がありません:追加フィールド.decode()。ストリップ()の代わりにfield.decode()削除
はあなたが@tdelaneyありがとう '/ R' 文字の
コード
import mysql.connector
import sys
import os
import sys
from datetime import datetime
#################################
# Database settings
hostname = "localhost"
username = "root"
password = "---------"
database = "weatherdb"
port = 3306
# arguments
csvFile = ""
tableName =""
#################################
# Simple routine to run a query on a database and print the results:
def doQuery(conn):
cur = conn.cursor()
cur.execute("SELECT * FROM weather_record")
count = 0
for row in cur:
res = ""
for field in row:
res = res + str(field.decode())+ "|" # line in question
print(res)
res = res + "\n"
#################################
# Get user arguments
def main(argv):
if(len(sys.argv)== 3):
# correct number of arguments
pw = sys.argv[2]
csvFile = sys.argv[1]
loadToDB()
else:
# incorrect number of arguments
currentFileName = os.path.basename(__file__)
print(f"usage {currentFileName} inputfile.csv tableName")
sys.exit(2)
#################################
print("Using mysql.connector…")
myConnection = mysql.connector.connect(host=hostname, user=username, port=port, passwd=password, db=database)
doQuery(myConnection)
myConnection.close()
#################################
# Run main function on script start
if __name__ == "__main__":
main(sys.argv[1:])
データベーステーブル
すべてのフィールドそれが違いを行う場合varchar型
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>weather_record</title>
<meta name="GENERATOR" content="HeidiSQL 9.4.0.5125">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">
thead tr {background-color: ActiveCaption; color: CaptionText;}
th, td {vertical-align: top; font-family: "Tahoma", Arial, Helvetica, sans-serif; font-size: 10pt; padding: 3px; }
table, td {border: 1px solid silver;}
table {border-collapse: collapse;}
thead .col0 {width: 101px;}
thead .col1 {width: 82px;}
thead .col2 {width: 85px;}
thead .col3 {width: 67px;}
thead .col4 {width: 85px;}
thead .col5 {width: 78px;}
thead .col6 {width: 122px;}
thead .col7 {width: 142px;}
thead .col8 {width: 135px;}
thead .col9 {width: 86px;}
thead .col10 {width: 102px;}
thead .col11 {width: 118px;}
thead .col12 {width: 98px;}
thead .col13 {width: 118px;}
thead .col14 {width: 119px;}
thead .col15 {width: 86px;}
thead .col16 {width: 102px;}
thead .col17 {width: 118px;}
thead .col18 {width: 98px;}
thead .col19 {width: 118px;}
thead .col20 {width: 119px;}
</style>
</head>
<body>
<table caption="weather_record (27 rows)">
<thead>
<tr>
<th class="col0">date</th>
<th class="col1">minTemp</th>
<th class="col2">maxTemp</th>
<th class="col3">rainfall</th>
<th class="col4">evaporation</th>
<th class="col5">sunshine</th>
<th class="col6">maxWindGustDir</th>
<th class="col7">maxWindGustSpeed</th>
<th class="col8">maxWindGustTime</th>
<th class="col9">9amTemp</th>
<th class="col10">9amHumidity</th>
<th class="col11">9amCloudCover</th>
<th class="col12">9amWindDir</th>
<th class="col13">9amWindSpeed</th>
<th class="col14">9amAirPressure</th>
<th class="col15">3pmTemp</th>
<th class="col16">3pmHumidity</th>
<th class="col17">3pmCloudCover</th>
<th class="col18">3pmWindDir</th>
<th class="col19">3pmWindSpeed</th>
<th class="col20">3pmAirPressure</th>
</tr>
</thead>
<tbody>
<td>
</tr>
<tr>
<td class="col0">2017-02-28</td>
<td class="col1">10.9</td>
<td class="col2">33.3</td>
<td class="col3">0</td>
<td class="col4"></td>
<td class="col5"></td>
<td class="col6">N</td>
<td class="col7">30</td>
<td class="col8">09:24</td>
<td class="col9">21.2</td>
<td class="col10">66</td>
<td class="col11"></td>
<td class="col12">SE</td>
<td class="col13">7</td>
<td class="col14">1022.3</td>
<td class="col15">32.1</td>
<td class="col16">22</td>
<td class="col17"></td>
<td class="col18">NNE</td>
<td class="col19">9</td>
<td class="col20">1019.9
</td>
</tr>
</tbody>
</table
</body>
</html>
出力
は、出力は窓にコマンドラインで示されたされている
C:\Python>python csvToDb.py
Using mysql.connector…
2017-02-28|
2017-02-28|10.9|
2017-02-28|10.9|33.3|
2017-02-28|10.9|33.3|0|
2017-02-28|10.9|33.3|0||
2017-02-28|10.9|33.3|0|||
2017-02-28|10.9|33.3|0|||N|
2017-02-28|10.9|33.3|0|||N|30|
2017-02-28|10.9|33.3|0|||N|30|09:24|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|32.1|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|32.1|22|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|32.1|22||
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|32.1|22||NNE|
2017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|32.1|22||NNE|9|
|017-02-28|10.9|33.3|0|||N|30|09:24|21.2|66||SE|7|1022.3|32.1|22||NNE|9|1019.9
usage csvToDb.py inputfile.csv tableName
最後の2行目にあるように、最初の文字は '|'で上書きされています。キャラクター。誰かがこれまでに遭遇したことはありますか?
これはコマンドプロンプトの折り返しではありませんか? PowerShellでスクリプトを実行して、ウィンドウを大きくしてみてください。 – Blender
Powershellの出力は同じです。 http://imgur.com/a/eWnpP – nuzzz
多分そこに\ rのような奇妙な文字があります。デバッグのために、 'repr(field.decode())'に変更してください。余分な引用符はありますが、奇妙な文字が表示されます。 – tdelaney