【发布时间】:2017-10-26 00:25:37
【问题描述】:
为了了解更多关于python的知识,我制作了以下简单的脚本:
#!/usr/bin/env python
# coding=utf-8
# -*- Mode: python; c-basic-offset: 4 -*-
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import mapper
db=create_engine('postgresql://somepassword:someuser@127.0.0.1/hello')
db.echo = False
metadata = MetaData(db)
people=Table('people',metadata,autoload=True)
class People(object):
pass
people_mapper=mapper(People,people)
db_session=sessionmaker()
db_session.configure(bind=db)
lewis_hamilton=People()
lewis_hamilton.name='Lewis'
lewis_hamilton.surname='Hamilton'
lewis_hamilton.age=44
db_session.save(lewis_hamilton)
db_session.flush()
我使用下表将插入“Lewis Hamilton”(直接来自 psql):
Table "public.people"
Column | Type | Modifiers
---------+-----------------------+-----------------------------------------------------
id | integer | not null default nextval('people_id_seq'::regclass)
name | character varying(60) |
surname | character varying(60) |
age | smallint |
但是当我运行脚本时出现以下错误:
sqlalchemy.exc.ArgumentError: Mapper Mapper|People|people 无法为映射表“people”组装任何主键列
我也看到了以下问题,但没有提供我想要的答案:
- SQLAlchemy classical mapper "could not assemble any primary key columns for mapped table" despite presence of a primary key?
- Could not assemble any primary key columns for mapped table
- SQLAlchemy classical mapper "could not assemble any primary key columns for mapped table" despite presence of a primary key?
因为我使用自动加载来加载 sql 映射。
【问题讨论】:
-
\d 人输出什么?您已发布列,但未发布这些列之后显示的索引。您能否修改您的帖子以包含这部分?
标签: python sqlalchemy