当前位置: 首页 > 面试题库 >

使用python创建Postgres数据库

曾高杰
2023-03-14
问题内容

我想使用Python创建Postgres数据库。

con = psql.connect(dbname='postgres',
      user=self.user_name, host='',
      password=self.password)

cur = con.cursor()
cur.execute("CREATE DATABASE %s  ;" % self.db_name)

我收到以下错误:

InternalError: CREATE DATABASE cannot run inside a transaction block

我正在使用psycopg2进行连接。我不明白这是什么问题。我想做的是连接到数据库(Postgres):

psql -postgres -U UserName

然后创建另一个数据库:

create database test;

这是我通常要做的,我想通过创建Python脚本来实现此自动化。


问题答案:

使用psycopg2扩展名ISOLATION_LEVEL_AUTOCOMMIT:

发出命令且不需要commit()或rollback()时,不会启动任何事务。

import psycopg2
from psycopg2 import sql
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT # <-- ADD THIS LINE

con = psycopg2.connect(dbname='postgres',
      user=self.user_name, host='',
      password=self.password)

con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) # <-- ADD THIS LINE

cur = con.cursor()

# Use the psycopg2.sql module instead of string concatenation 
# in order to avoid sql injection attacs.
cur.execute(sql.SQL("CREATE DATABASE {}").format(
        sql.Identifier(self.db_name))
    )


 类似资料:
  • 问题内容: 有创建数据库的类似物吗? 背景:我正在编写一个脚本,以在未知系统上的PostgreSQL中自动设置架构。我不确定数据库(甚至是架构的一部分)是否已经部署,因此如果某些结构已经存在,我想构建代码以使其不会失败(或者理想情况下甚至显示错误)。我想区分导致我无法创建数据库的错误(因此中止将来的架构更改,因为它们将无法工作)。 问题答案: 否,但是您可以查询pg_catalog.pg_data

  • 我想创建基于实体的数据库。配置: null null 由于某种原因,数据库的创建发生在事务中。我发现源代码负责,但我无法找出交易是如何启动的。我可以提供更详细的信息,但也许现在已经有人可以帮忙了。 编辑:persistence.xml

  • 是否有用于创建数据库的模拟? 背景:我正在编写一个脚本来在未知系统上自动设置PostgreSQL中的模式。我不确定数据库(甚至是模式的一部分)是否已经部署,所以如果某些结构已经存在,我想将我的代码结构为不会失败(或者理想情况下甚至显示错误)。我想将阻止我创建数据库的错误(因此中止未来的模式更改,因为它们不起作用)与此错误区分开来。

  • 问题内容: 这是我从Google bigquery解析的数据: 作为Python新手,我真的不知道如何解析该数据以创建一个json对象,如下所示: 任何人都可以给我一些入门的提示吗? 例 在这个单词中,是995和1600。因此也是如此。 问题答案: 如果“ Z”是您的大词典,则在“响应”上您将获得所需的结构。 响应后,您将获得以下信息: 我相信它是您所需要的。比仅使用json对响应做一个就可以了。

  • 我已经尝试了StackOverflow中给出的许多解决方案,比如中的一些更改、更改方言、设置模式等。我检查了数据库权限和用户/密码信息,一切正常。 } 根据我下面的教程,这个设置应该导致在postgres数据库中创建表,但它没有发生。

  • 问题内容: 我想在Python(2.7)中创建一个3D数组,以便像这样使用: 数组的大小应该是我拥有的变量的大小。(n n n) 我尝试使用: 但这似乎不起作用。 我只能使用默认库,并且乘法(即)的方法将不起作用,因为它们链接到相同的指针,并且我需要所有值都是单独的 问题答案: 您应该使用列表理解: 您本可以使用一个看起来像您尝试过的语句来生成数据结构,但是由于内部列表是按引用复制的,因此它会产生