如何使用SQLAlchemy创建新数据库?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (89)

使用SQLAlchemy,可以创建如下所示的引擎:

from sqlalchemy import create_engine
engine = create_engine("postgresql://localhost/mydb")

如果指定的数据库不存在,是否可以告诉SQLAlchemy创建新数据库?

提问于
用户回答回答于

在Postgres上,默认情况下有三个数据库。如果您能够以超级用户的身份进行连接(例如,postgres),则可以连接到postgrestemplate1数据库。默认pg_conf只允许名为postgres使用postgres角色,所以最简单的事情就是成为那个用户。无论如何,与通常一样,与具有创建数据库权限的用户一起创建一个引擎:

>>> engine = sqlalchemy.create_engine("postgres://postgres@/postgres")

你不能用engine.execute()但是,因为Postgres不允许在事务中创建数据库,sqlalchemy总是尝试在事务中运行查询。为了避免这种情况,从引擎获取底层连接:

>>> conn = engine.connect()

但是连接仍然在事务中,所以您必须用commit:

>>> conn.execute("commit")

然后,您可以继续使用适当的PostgreSQL命令来创建数据库。

>>> conn.execute("create database test")
>>> conn.close()
用户回答回答于

http://sqlalchemy-utils.readthedocs.org/en/latest/database_helpers.html

from sqlalchemy import create_engine
from sqlalchemy_utils import database_exists, create_database

engine = create_engine("postgres://localhost/mydb")
if not database_exists(engine.url):
    create_database(engine.url)

print(database_exists(engine.url))

扫码关注云+社区