我想使用Python的SQLAlchemy包在Postgres数据库中创建表,并从 Dataframe 中插入数据。我还想分配外键和主键。
下面的代码创建了两个表,但使用的是模式“public”而不是模式“my_schema”。
有人能找出错误吗?
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey, MetaData
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
# Basisklasse für alle Tabellen definieren
metadata_obj = MetaData(schema="mein_schema")
Base = declarative_base(metadata_obj)
# Tabelle 2 definieren
class Tabelle2(Base):
__tablename__ = 'tabelle2'
id = Column(Integer, primary_key=True)
name = Column(String)
# Tabelle 1 definieren
class Tabelle1(Base):
__tablename__ = 'tabelle1'
id = Column(Integer, primary_key=True)
name = Column(String)
tabelle2_id = Column(Integer, ForeignKey('tabelle2.id'))
tabelle2 = relationship(Tabelle2)
# Alle Tabellen in der Datenbank erstellen
Base.metadata.create_all(engine)
1条答案
按热度按时间5lhxktic1#
您将metadata_obj作为参数传递给declarative_base,但未指定它属于元数据命名参数:
declarative_base永远不知道指定模式的使用,并福尔斯退到连接的默认模式。