[ckan-dev] datastore_upsert error
Isabel Ruiz
isaruizmellado at gmail.com
Tue Jun 7 10:53:02 UTC 2016
Hi,
Now it works!
I have execute your psql line: sudo -u postgres psql -c '\d "RESOURCE_ID"'
datastore_default
and poiIDSec wasn't a unique contraint.
I created it manually into postgresql and now datastore_upsert works.
Gracias!
On Thu, Jun 2, 2016 at 10:29 AM, Adrià Mercader <adria.mercader at okfn.org>
wrote:
> Hi Isabel,
>
> Does the actual table on the datastore database has a UNIQUE
> constraint created for the poiIDSec field? You can check this running:
>
> sudo -u postgres psql -c '\d "RESOURCE_ID"' datastore_default
>
>
> The following script works for me:
>
> import ckanapi
>
> malaga = ckanapi.RemoteCKAN('http://localhost:5001',
> apikey='API_KEY',
> user_agent='ckanapismassa/1.0')
>
>
> rows = [
> {'poiIDSec': '1', 'hola': 'a'},
> {'poiIDSec': '2', 'hola': 'b'},
> {'poiIDSec': '3', 'hola': 'c'},
> {'poiIDSec': '4', 'hola': 'd'},
> {'poiIDSec': '5', 'hola': 'e'},
> {'poiIDSec': '6', 'hola': 'f'},
> ]
>
>
> malaga.action.datastore_create(
> resource_id='3165ad32-2e35-46be-aece-01040e59a994',
> force=True,
> primary_key='poiIDSec',
> records=rows
> )
>
> rows = [
> {'poiIDSec': '1', 'hola': 'a2'},
> {'poiIDSec': '2', 'hola': 'b2'},
> {'poiIDSec': '3', 'hola': 'c2'},
> {'poiIDSec': '4', 'hola': 'd2'},
> {'poiIDSec': '5', 'hola': 'e2'},
> {'poiIDSec': '6', 'hola': 'f2'},
> ]
>
> malaga.action.datastore_upsert(
> resource_id='3165ad32-2e35-46be-aece-01040e59a994',
> force=True,
> records=rows
> )
>
>
>
> On 31 May 2016 at 10:36, Isabel Ruiz <isaruizmellado at gmail.com> wrote:
> > Hi all,
> >
> > I have this problem using datastore API.
> >
> > I create a datastore and insert rows using this code (I execute this
> once):
> >
> > malaga = ckanapi.RemoteCKAN(URL,
> > apikey=APIKEY,
> > user_agent='ckanapismassa/1.0')
> >
> > malaga.action.datastore_create(
> > resource_id=RESOURCE_ID,
> > force=True,
> > primary_key='poiIDSec'
> > records=rows
> > )
> >
> > It works, I mean: it creates a datastore and inserts every rows.
> >
> > Then, I execute a cron every minutes, that will update rows, this is the
> > code:
> >
> > malaga = ckanapi.RemoteCKAN(URL,
> > apikey=APIKEY,
> > user_agent='ckanapismassa/1.0')
> >
> > malaga.action.datastore_upsert(
> > resource_id=RESOURCE_ID,
> > force=True,
> > records=rows
> > )
> >
> > This returns me this error:
> >
> > Traceback (most recent call last):
> > ValidationError: None - {u'table': [u'table does not have a unique key
> > defined'], u'__type': u'Validation Error'}
> >
> >
> > ['Traceback (most recent call last):\n', ' File "<stdin>", line 93, in
> > <module>\n', ' File
> > "/home/ckan/ckan/lib/default/src/ckanapi/ckanapi/common.py", line 51, in
> > action\n return self._ckan.call_action(name, data_dict=kwargs)\n', '
> > File "/home/ckan/ckan/lib/default/src/ckanapi/ckanapi/remoteckan.py",
> line
> > 83, in call_action\n return reverse_apicontroller_action(url, status,
> > response)\n', ' File
> > "/home/ckan/ckan/lib/default/src/ckanapi/ckanapi/common.py", line 124, in
> > reverse_apicontroller_action\n raise ValidationError(err)\n',
> > "ValidationError: None - {u'table': [u'table does not have a unique key
> > defined'], u'__type': u'Validation Error'}\n"]
> >
> >
> > How can I solve this ?
> >
> > Is there another way to update datastore rows?
> >
> >
> > Thanks!!!
> >
> > --
> > Isabel M. Ruiz Mellado
> > http://about.me/isabelruiz
> >
> > _______________________________________________
> > ckan-dev mailing list
> > ckan-dev at lists.okfn.org
> > https://lists.okfn.org/mailman/listinfo/ckan-dev
> > Unsubscribe: https://lists.okfn.org/mailman/options/ckan-dev
> >
> _______________________________________________
> ckan-dev mailing list
> ckan-dev at lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/ckan-dev
> Unsubscribe: https://lists.okfn.org/mailman/options/ckan-dev
>
--
Isabel M. Ruiz Mellado
http://about.me/isabelruiz
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/ckan-dev/attachments/20160607/87c8ceec/attachment-0003.html>
More information about the ckan-dev
mailing list