python+oracle+sql+s,Python+SQLAlchemy+Oracle+sequences=无法插入n
时间: 2023-09-14 14:05:11 浏览: 113
如果你使用 Python, SQLAlchemy 和 Oracle,以及 sequences 生成 id,但是无法插入数据,可能是因为你没有正确地配置 sequences。
首先,确保你的表中有一个名为 id 的字段,并且它是一个自增长的主键。然后,在 SQLAlchemy 中,你需要使用 `Sequence` 类来定义一个 sequence,如下所示:
```
from sqlalchemy import Sequence
id_seq = Sequence('id_seq')
```
接下来,在你的表定义中,将 id 字段设置为从该 sequence 中获取下一个值,如下所示:
```
from sqlalchemy import Column, Integer
class MyTable(Base):
__tablename__ = 'my_table'
id = Column(Integer, id_seq, primary_key=True)
name = Column(String)
...
```
然后,在插入数据时,你需要使用 `next_value()` 方法来获取下一个 sequence 值,并将其插入到表中,如下所示:
```
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
next_id = session.execute(id_seq)
data = {
'id': next_id,
'name': 'John Doe',
...
}
my_table = MyTable(**data)
session.add(my_table)
session.commit()
```
这样就可以正确地插入数据了。注意,如果你在使用 Oracle 11g 或更低版本,则需要使用 `Sequence` 对象的 `execute()` 方法来获取下一个 sequence 值,而不是 `session.execute()`。
阅读全文