Python SQLAlchemy创建数据库,然后更改所有者

Python SQLAlchemy创建数据库,然后更改所有者,python,postgresql,orm,sqlalchemy,Python,Postgresql,Orm,Sqlalchemy,我正在试验和Sqlachemy以及ORM,我正在尝试将原始sql转换为ORM结构。 我的问题是设置所有权 原始sql文件如下所示: CREATE DATABASE mydb WITH ENCODING='UTF8' OWNER otheruser; CREATE TABLE mytable ( id VARCHAR NOT NULL UNIQUE, data VARCHAR NOT NULL, PRIMARY KEY (id) ); ALTER TABLE mytabl

我正在试验和Sqlachemy以及ORM,我正在尝试将原始sql转换为ORM结构。
我的问题是设置所有权

原始sql文件如下所示:

CREATE DATABASE mydb WITH ENCODING='UTF8' OWNER otheruser;

CREATE TABLE mytable
(
    id VARCHAR NOT NULL UNIQUE,
    data VARCHAR NOT NULL,
    PRIMARY KEY (id)
);
ALTER TABLE mytable OWNER TO otheruser;
from sqlalchemy_utils import database_exists, create_database

class DataProvider(object):
    def __init__(self):

        engine = create_engine(
            "postgresql+psycopg2://postgres:@localhost/mydb")

        if not database_exists(engine.url):
            create_database(engine.url)

        Base.metadata.create_all(engine)
        self.session = sessionmaker(bind=engine)()



class MyTable(Base):
    __tablename__ = 'mytable'
    id = Column(String, primary_key=True)
    data = Column(String, nullable=False)
要应用,我只需运行:

psql -U postgres -r raw_sql_file.sql
我的模块如下所示:

CREATE DATABASE mydb WITH ENCODING='UTF8' OWNER otheruser;

CREATE TABLE mytable
(
    id VARCHAR NOT NULL UNIQUE,
    data VARCHAR NOT NULL,
    PRIMARY KEY (id)
);
ALTER TABLE mytable OWNER TO otheruser;
from sqlalchemy_utils import database_exists, create_database

class DataProvider(object):
    def __init__(self):

        engine = create_engine(
            "postgresql+psycopg2://postgres:@localhost/mydb")

        if not database_exists(engine.url):
            create_database(engine.url)

        Base.metadata.create_all(engine)
        self.session = sessionmaker(bind=engine)()



class MyTable(Base):
    __tablename__ = 'mytable'
    id = Column(String, primary_key=True)
    data = Column(String, nullable=False)
当我启动DataProvider类时,若数据库不存在,那个么它将从头开始创建

我的问题是数据库属于
postgres
用户。我找不到一个好方法将数据库和表更改为另一个


我缺少什么?

使用
otheruser
而不是
postgres
连接到数据库,因为另一个用户已经是数据库所有者。@AnttiHaapala这会起作用,但是如果我想使用postgres user创建我的数据库,然后向另一个用户授予just read权限怎么办。我可以从代码中执行吗?。。。此外,对于任何严肃的数据库创建,您应该考虑使用<代码> AlimBib/Cudio>迁移工具。我检查了DOC,一种方法是:如果代码>TyLayTable AgsSux支持所有者,但唉,您希望用户<代码> PASGRES拥有这些表,但是想用普通用户查询吗?只需将所有者设置为
postgres
,创建数据库/表,然后使用其他用户重新连接即可。