Comments (11)
I believe bulk API is GA now.
from pyairtable.
Yes! It's ready now
https://twitter.com/airtable/status/1174753477211213824
from pyairtable.
It is not available to everyone yet, but here is the sign-up page for those interested in accessing it:
https://airtable.com/shr2Hk8bNAA6wp1zM?utm_source=newsletter&utm_campaign=may2019&utm_content=batchapibeta
Here is a look at my API documentation. The same "records" wrapper can be applied for updates as well. It still allows uploading single records, so it's backwards compatible.
from pyairtable.
I am interested in this feature as well. Hi, @gtalarico , to @walterdefoor 's point, are you working on this already or should the community get it started?
from pyairtable.
Can you include a link? Is it available to everyone?
I didn't see anything in the main docs.
from pyairtable.
Cool! Thanks for sharing this.
Probably not a good idea to implement this until it's fully rolled out, but we will keep this on our radar
from pyairtable.
Happy to consider it if someone wants to start working on this
from pyairtable.
I can take a crack at this tomorrow if nobody else is doing it.
The changes would be pretty simple.
For example, right now insert is:
def insert(self, fields, typecast=False):
return self._post(
self.url_table, json_data={"fields": fields, "typecast": typecast}
)
I would make it something like this:
def insert(self, fields_or_records, typecast=False):
# if fields_or_records is a dict, assume it's the fields for a single record
if isinstance(fields_or_records, dict):
# Changed back to fields for backwards compatibility
return self._post(
self.url_table, json_data={"fields": fields_or_records, "typecast": typecast}
)
# assume an iterable of records was passed in.
# pass to list constructor to make sure json serializer doesn't choke on it
records = list(fields_or_records)
# max records per call is 10. this should be defined as a constant in the Airtable class
if len(records) > self.MAX_RECORDS_PER_CALL:
raise RuntimeError(
'Only {} records can be inserted per call'.format(self.MAX_RECORDS_PER_CALL)
)
return self._post(
self.url_table, json_data={"records": records, "typecast": typecast}
)
from pyairtable.
insert() has a batch_insert() counterpart that you can utilize so that it simplifies out the conditional detection of the param type.
from pyairtable.
I feel like the normal insert() call should be able to insert 10 records if that's only one network request.
batch_insert() would now be mostly for inserting more than 10 records.
_batch_request() could break up the iterable into sets of 10 for maximum speed.
Also I noticed that _batch_request() does not accept the typecast param.
So right now typecast does nothing for batch requests.
from pyairtable.
This should all be implemented by now
from pyairtable.
Related Issues (20)
- batch_upsert does not return createdRecords or updatedRecords HOT 1
- 'Api' object has no attribute 'table' HOT 1
- Suddenly getting AttributeError?
- Loading a base with Base() and name overwrites id HOT 2
- Airtable Insert error code 422 HOT 4
- `Api.all()` not present but indicated in `Api` docstring HOT 2
- Webhook delete method HOT 2
- Importing formulas wont work HOT 2
- to_airtable_value() might not be correct for date and datetime values HOT 2
- Add more formulas HOT 2
- Update does not accept return_fields_by_field_id parameter HOT 8
- Rate limit API requests without forcing retries HOT 4
- get_table_schema fails when the api.table is initialized with the table's ID HOT 2
- Error using sample HOT 2
- Implement missing formulas HOT 2
- 2.2 release missing table.update_field HOT 1
- Can I just replace my API key with Personal Access token in legacy code ? HOT 1
- LookupField referencing a LinkField returns id rather than entity HOT 2
- Dynamic solution to formulas HOT 1
- One to many search difficulties HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pyairtable.