使用SQLAlchemy,将创建一个Engine对象,如下所示:
from sqlalchemy import create_engine
engine = create_engine("postgresql://localhost/mydb")
engine
如果to参数create_engine
(在这种情况下为mydb
)中指定的数据库不存在,则访问将失败。如果指定的数据库不存在,是否可以告诉SQLAlchemy创建一个新数据库?
在postgres上,通常默认情况下存在三个数据库。如果您能够以超级用户身份(例如,postgres
角色)进行连接,则可以连接到postgres
或template1
数据库。默认的pg_hba.conf只允许名为unix的用户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()
问题内容: 是否有“ Pythonic”方式(我的意思是,没有“ pure SQL”查询)来使用SQLAlchemy定义SQL视图? 问题答案: 更新: 又见SQLAlchemy的使用配方这里 据我所知,开箱即用不支持创建(只读非实例化)视图。但是在SQLAlchemy 0.7中添加此功能非常简单(类似于我在此处给出的示例)。您只需要编写一个编译器扩展即可 。使用此扩展名,您可以编写(假设这是一个
问题内容: 问题: 是否可以在迁移脚本中创建一个新的数据库,然后连接到它?怎么样? 我的场景: 我正在尝试在Java项目(使用Jersey2.4 + tomcat 7 + PostgreSQL 9.3.1 + EclipseLink的RESTful应用程序)中使用flyway来管理使用git的不同开发人员之间的更改。我写了自己的初始化脚本,并运行了: 而且效果很好。问题是我无法使用脚本创建新的数据
问题内容: 我正在研究自动克隆数据库的Golang脚本。我正在使用go-sql- driver,但是在文档中找不到创建新数据库的方法。与MySQL的连接需要以下URL方案: 但是该数据库尚不存在,我只想连接到服务器,然后创建一个新的数据库。 我怎样才能做到这一点?我必须使用其他驱动程序吗? 问题答案: 您可以完美地使用go-sql-driver。但是,您需要使用具有适当访问权限的mysql用户来创
问题内容: 作为MySQL的新手,我已经安装了最新版本的MySQL Workbench(5.2.33)。我想知道如何使用此应用程序创建数据库。在SQL编辑器的“概述”选项卡中,几乎没有显示“ MySQL模式”,这些模式是现有数据库吗? 问题答案: 启动MySQL Workbench。 在欢迎窗口的左窗格中,在“打开连接以开始查询”下选择要连接的数据库。 查询窗口将打开。在其左窗格上,有一个标题为“
我使用MySQl Work Bench制作了一个表模式,并希望用我丢弃的tweet填充它。到目前为止,所有外键和主键都已设置。但我无法让SQLalchemy使用模式并填充它。我使用以下命令行进行了尝试:我缩短了表创建的代码,使其只与“user”部分匹配。我得到的错误是
现在;我得到以下错误: 我以为这是因为我没有在会话中使用那个数据库;所以我去处理使用session.execute并使用sql语句use来使用数据库,但它给我带来了语法错误 check_if_exists=session.query(latest_movies_scraper).filter_by(name=dictionary['title']).first()