運行時突然報了一個:%d format: a number is required, not str
翻譯後就是:格式化時需要的是一個數字而不是一字符串
排查了一圈是數據庫連接導緻的問題,主要原因還是自己的疏忽導緻
# 部分代碼
def _db(sql):
conn = pymysql.connect(host="101.101.12.86", port="3307", user="root",
password="123456", db="django-dev", charset="utf8")
......
上述代碼中的port端口傳的值是字符串類型,抛錯原因也是因為是這個導緻的,以為它格式化時規定的是整數類型,也就是%d
我們再看源碼,源碼中有一段介紹,判斷了port如果不是int類型,就會抛錯誤
# 部分源碼
# 判斷port的類型是不是int,如果不是int就抛出錯誤
self.port = port or 3306
if type(self.port) is not int:
raise ValueError("port should be of type int")
# 最終的抛錯誤點是在這裡格式化的時候抛出來的
self.host_info = "socket %s:%d" % (self.host, self.port)
if DEBUG:
print("connected using socket")
解決方法:把port的類型修改為整數類型,再運行就行了
# 部分代碼
def _db(sql):
conn = pymysql.connect(host="101.101.12.86", port=3307, user="root",
password="123456", db="django-dev", charset="utf8")
......
以上總結或許能幫助到你,或許幫助不到你,但還是希望能幫助到你,如有疑問、歧義,評論區留言會及時修正發布,謝謝!
微信搜索公衆号:就用python
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!