我使用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上工作的问题。
我还能尝试什么?
编辑:添加了导入和详细说明