下記を参考に、フィールドだけ用意したアプリに画像を一括でアップロードしたいと考えています。
ただ上記の記事でもみたことがないエラーが出ており根本的に解釈が間違っているような気がしています。
前提として、
①アップロードしたい画像は同じフォルダ内でいいのか
②アップロードする画像のファイルパスを指定しますが、C:から始まるファイルパスなのか、data.csvやpost.pyのフォルダ内(A)にもう一つフォルダ(B)を用意し、AからBまでのパスでいいのか
③kintoneアプリは空でいいのか
当方ろくにプログラミング知識がない状態で情けないのですが、
お助けいただけないでしょうか
使用したファイル
data.csv
age,No,type,picfile_falipath
11,1,male,pic/icon1.png
12,2,female,pic/icon2.png
post.py
import pykintone
from pykintone import model
import pykintone.structure_field as sf
import codecs
import csv
class Record(model.kintoneModel):
def __init__ (self, app, row):
super(Record, self). __init__ ()
for cell_key, cell_val in row.items():
if '_filepath' in cell_key:
setattr(self, cell_key.rstrip('_filepath'), [sf.File.upload(filepath, app) for filepath in cell_val.split(';')])
else:
setattr(self, cell_key, cell_val)
app = pykintone.app("xxx","xxx","xxx")
with codecs.open('data.csv', 'r', 'utf-8') as csvfile:
data = csv.DictReader(csvfile)
records = [Record(app, row) for row in data]
for i in range(0, len(records), 100):
app.batch_create(records[i:i+100])
表示されたエラー
Traceback (most recent call last):
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 174, in _new_conn
conn = connection.create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\connection.py", line 72, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\socket.py", line 962, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno 11001] getaddrinfo failed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen
httplib_response = self._make_request(
^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 386, in _make_request
self._validate_conn(conn)
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 1042, in _validate_conn
conn.connect()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 363, in connect
self.sock = conn = self._new_conn()
^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connection.py", line 186, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\adapters.py", line 489, in send
resp = conn.urlopen(
^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\connectionpool.py", line 787, in urlopen
retries = retries.increment(
^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\urllib3\util\retry.py", line 592, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //xxx.cybozu.com.cybozu.com/k/v1/records.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\xxx\Desktop\pictest\post.py", line 21, in <module>
app.batch_create(records[i:i+100])
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\pykintone\application.py", line 97, in batch_create
resp = self._request("POST", url, params_or_data=data)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\pykintone\base_api.py", line 27, in _request
r = requests.request(m, url, data=json.dumps(params_or_data), headers=h, **self.requests_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\api.py", line 59, in request
return session.request(method=method, url=url, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\sessions.py", line 587, in request
resp = self.send(prep, **send_kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\sessions.py", line 701, in send
r = adapter.send(request, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\xxx\AppData\Local\Programs\Python\Python311\Lib\site-packages\requests\adapters.py", line 565, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='https', port=443): Max retries exceeded with url: //xxx.cybozu.com.cybozu.com/k/v1/records.json (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000195DFEAF290>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))