我正在尝试和Sqlachemy和ORM一起尝试将原始sql转换为ORM结构。
我的问题是设置ownship
原始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;
申请,我只是运行:
psql -U postgres -r raw_sql_file.sql
我的模块看起来像这样:
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
用户所有。我找不到一个很好的方法来改变数据库和表乡镇。
我错过了什么?