当自动增量不起作用时使列自动增量(Sqlalchemy,PostgreSQL)

时间:2019-10-12 14:25:43

标签: python postgresql sqlalchemy psycopg2

我使用sqlalchemy制作了一个简单的表。

from sqlalchemy import create_engine  
from sqlalchemy.ext.declarative import declarative_base  
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Table, Column, ForeignKey, MetaData, Sequence
from sqlalchemy.orm import relationship
from sqlalchemy import INTEGER, REAL, VARCHAR, TIMESTAMP, BOOLEAN, Integer
import psycopg2 as pg
import psycopg2.extras

db_string = "postgresql://someDBInfoString"
db = create_engine(db_string)
base = declarative_base()

Session = sessionmaker(db)    
session = Session()           

class Women(base):
    __tablename__ = "WOMEN"
    id = Column(Integer, primary_key=True)
    name = Column(VARCHAR)
    man = relationship("Men", uselist=False, back_populates="woman") 

我尝试了以下几种方法来使id列具有Serial类型或可以自动递增的等效形式。

1)将其设置为PK

2)添加autoincrement=True关键字arg

id = Column(Integer, autoincrement=True, primary_key=True)

3)传递Sequence

id = Column(Integer, Sequence('seq_tramos_id', start=1, increment=1), primary_key=True)

但是在每种方法中,id列都被设置为DBMS上的普通整数类型,并且通过DBMS(Postgresql)插入数据需要手动包括id和其他值。像session.add(somestring)那样使用会话使用ORM插入数据没有问题,因为id会按照我的预期自动设置。因此,这是ORM创建的表如何在DBMS上工作的问题。

我还能尝试什么?

编辑:添加了导入和详细说明

0 个答案:

没有答案