gpt4 book ai didi

Python打印函数使用mysqlcursor覆盖第一个字符

转载 作者:行者123 更新时间:2023-11-29 19:11:49 24 4
gpt4 key购买 nike

我在从数据库打印时遇到了一个奇怪的错误,不确定问题是由于 python 解码还是其他原因造成的。我尝试使用 sys.stdout.write('.') ,它有类似的输出问题

*更新1Powershell 具有相同的输出,并且改变窗口大小没有效果 http://imgur.com/a/eWnpP

*更新2找到解决方案:添加 field.decode().strip() 而不是 field.decode() 删除 '/r' 字符

谢谢@tdelaney

代码

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>

输出

输出显示在Windows 命令行上(如果有影响的话)

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

正如您在倒数第二行中看到的,第一个字符已被“|”覆盖特点。有人遇到过这种情况吗?

最佳答案

在标准终端中 \r 字符将插入点移回到当前行的开头。如果您的行的前面被覆盖,则很有可能是有罪的一方。

根本原因恕我直言,是数据在放入数据库时​​没有正确清理。如果您无法清理数据库本身,解决方案是在每次使用它时进行清理。

关于Python打印函数使用mysqlcursor覆盖第一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com