ETL过程:使用SQLAlchemy从Python Dataframe 到postgres

pn9klfpd  于 2023-01-24  发布在  Python
关注(0)|答案(1)|浏览(123)

我想使用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)
5lhxktic

5lhxktic1#

您将metadata_obj作为参数传递给declarative_base,但未指定它属于元数据命名参数:

Base = declarative_base(metadata=metadata_obj)

declarative_base永远不知道指定模式的使用,并福尔斯退到连接的默认模式。

相关问题