Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 Python中的Tarantool-如何调用自动增量函数_Python 2.7_Tarantool - Fatal编程技术网

Python 2.7 Python中的Tarantool-如何调用自动增量函数

Python 2.7 Python中的Tarantool-如何调用自动增量函数,python-2.7,tarantool,Python 2.7,Tarantool,我需要使用python客户端调用Tarantool 1.6中的auto_increment函数 我尝试过但没有成功: database = tarantool.connect("localhost", 3301) s = database.space("customer") s.call('auto_increment','foo') 有人能澄清一下如何在python中使用auto_increment以“foo”作为字段插入新记录吗 我包括了错误消息,我尝试了几种在Python中使用自动增量的

我需要使用python客户端调用Tarantool 1.6中的auto_increment函数

我尝试过但没有成功:

database = tarantool.connect("localhost", 3301)
s = database.space("customer")
s.call('auto_increment','foo')
有人能澄清一下如何在python中使用auto_increment以“foo”作为字段插入新记录吗

我包括了错误消息,我尝试了几种在Python中使用自动增量的方法,但没有成功

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/nameko/containers.py", line 388, in _run_worker
    result = method(*worker_ctx.args, **worker_ctx.kwargs)
  File "./service.py", line 25, in create
    self.server.call('box.auto_increment', (0, 'foo'))
  File "/usr/local/lib/python2.7/dist-packages/tarantool/connection.py", line 373, in call
    response = self._send_request(request)
  File "/usr/local/lib/python2.7/dist-packages/tarantool/connection.py", line 341, in _send_request
    return self._send_request_wo_reconnect(request)
  File "/usr/local/lib/python2.7/dist-packages/tarantool/connection.py", line 261, in _send_request_wo_reconnect
    response = Response(self, self._read_response())
  File "/usr/local/lib/python2.7/dist-packages/tarantool/response.py", line 87, in __init__
    raise DatabaseError(self._return_code, self._return_message)
DatabaseError: (48, 'Unknown request type 10')

您只能在主键上自动递增。无法自动递增元组中的其他字段


请参见此处:

首先,您应该使用
tarantool 1.7+
而不是
1.6
。根据您的设置,您应该使用适用于您的操作系统的软件包管理器安装更新版本的Tarantool,或者使用相应的docker映像,即:

$ docker run --rm -p 3301:3301 -t -i tarantool/tarantool:1.7
在tarantool控制台中运行以下代码:

box.cfg{listen=3301}
customer=box.schema.space.create('customer',{
如果_not_exists=true,
临时=真
})
客户:创建索引('primary',{parts={1',unsigned'})
现在,运行python并执行以下操作:

$python
>>进口塔兰托
>>server=tarantool.connect(“localhost”,3301)
>>space=server.space(“客户”)
>>调用(“box.space.customer:auto_increment”,[['alpha']]
-[1,'α']
>>调用(“box.space.customer:auto_increment”,[['bravo']]
-[2,‘好极了’]
请注意
space.call()
的参数中的二维数组

由于1.7版
auto_increment()
已被弃用,因此使用
sequences
是自动递增索引的正确方法

重新启动tarantool并在tarantool控制台中执行以下lua代码:

box.cfg{listen=3301}
customer=box.schema.space.create('customer'{
如果_not_exists=true,
临时=真
})
box.schema.sequence.create('S',{min=1})
客户:创建索引(“主”{
部分={1,'无符号'},
序列='S'
})
现在,运行python并执行以下操作:

$python
>>进口塔兰托
>>server=tarantool.connect(“localhost”,3301)
>>space=server.space(“客户”)
>>空格。插入((无,“alpha”))
-[1,'α']
>>空格。插入((无,“B”))
-[2,‘好极了’]

您可以阅读更多有关序列的信息。

s.call('auto_increment',('foo',)不起作用我希望仅自动递增主键,即tupleI的第一个字段编写了一个单独的答案,其中包含解释如何使用
auto_increment()
(现已弃用)还有更合适的
序列
,让主键自动递增。