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

在Python中的psycopg2中执行.sql模式

郑帅
2023-03-14
问题内容

我在.sql文件中存储了一个PostgreSQL模式。看起来像:

CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY,
    facebook_id TEXT NOT NULL,
    name TEXT NOT NULL,
    access_token TEXT,
    created INTEGER NOT NULL
);

连接到数据库后如何运行该架构

我现有的Python代码适用于SQLite数据库:

# Create database connection
self.connection = sqlite3.connect("example.db")

# Run database schema
with self.connection as cursor:
    cursor.executescript(open("schema.sql", "r").read())

但是psycopg2executescript的游标上没有方法。那么,我该如何实现呢?


问题答案:

您可以使用execute

with self.connection as cursor:
    cursor.execute(open("schema.sql", "r").read())

尽管您可能想先将psycopg2设置为autocommitmode,以便可以使用脚本自己的事务管理。

如果psycopg2提供了一种更智能的模式,那就是它可以一次以一条语句读取文件并将其发送到DB,那就太好了,但是据我所知,目前还没有这种模式。面对$$引号(以及$delimiter$引号可能是任何标识符的变体)standard_conforming_stringsE''字符串,嵌套函数体等时,它需要一个相当扎实的解析器才能正确执行。

请注意,这 不适 用于:

  • 任何包含psql反斜杠命令的内容
  • 从STDIN复制..
  • 非常 长的输入

…因此不适用于来自 pg_dump



 类似资料:
  • 问题内容: 在Python psycopg2中,如何检查行是否存在? 目前我正在 问题答案: 不要使用(返回的列表永远不会大于0),请使用: 如果没有要获取的内容,则返回,对进行测试会为您提供一个方便的布尔值,以直接返回。

  • 问题内容: 在什么情况下,选择查询不会出现在V $ SQL视图中? 例如,如果我运行此命令: 然后立即运行此命令: 在什么情况下我将不返回任何行?在这种情况下,我可以强制将查询信息记录在V $ SQL中吗? 问题答案: 在什么情况下,选择查询不会出现在V $ SQL视图中? 一种情况是在真实应用程序群集(RAC)上。在这种环境下,将仅包含当前节点的库缓存。要查看所有节点上的库缓存,请从中选择。

  • 我有一个以下数据(alldata),它有SQL查询和视图名称。 我已经拆分并正确地将其分配给诱惑(alldata) 当我尝试执行查询并从中注册tempview或表时,它显示空指针错误。但是当我注释掉spark时,PRINTLN显示了表中的所有值。sql语句。 但是当我用spark.sql执行它时,它会显示以下错误,请帮助我出错的地方。 19/12/09 02:43:12错误执行器:在阶段4.0任务

  • 问题内容: 我们有一个Perl脚本,该脚本运行SQL并将数据放入表中。现在,我们不想传递一个SQL语句,而是希望传递一堆将它们放在一起的.sql文件中。我们知道我们的程序将失败,因为它期望一个SQL语句,而不是一堆SQL语句(也来自.sql文件)。我们如何使其与.sql文件(具有多个INSERT语句?)一起使用。我们正在使用DBI软件包。 一小段代码: 问题答案: 不确定您想要什么… 创建DBI对

  • 问题内容: 这个问题已经在这里有了答案 : 将公式(方程式)存储在数据库中,以便稍后进行评估(SQL Server 2005) (4个答案) 2年前关闭。 我需要对SQL表中保存的值进行算术运算,例如,我想在下一列中将值设为5 * 10 基于等式,我需要计算值。 问题答案: 如您所知,SQL Server没有EVAL()函数。但是,只要使用一些动态SQL,就有可能, 但实际上不建议这样做 。 例子

  • 问题内容: 大家好,我想执行我的SQL语句,但是我在synatx上遇到麻烦,有人可以帮助我了解我做错了什么吗? 谢谢,阿什。 问题答案: 您需要解决的最重要的事情是使用查询参数,而不是动态地构建字符串。这将提高性能,维护和安全性。 此外,您想使用较新的强类型ADO.Net对象。确保为添加使用指令。 注意此代码中的语句。完成连接后,他们将 确保 您的连接已关闭。这很重要,因为数据库连接是有限且不受管

  • 大家好,我在joomla 2.5中为后端做了一个组件,但是我在执行sql查询时遇到了问题,我的变量是空的,所以它不会显示任何内容。 我有其他的文件和文件,但这里对我的问题很重要。 首先在我的controller.php我有这个内部管理文件 在我的模型文件我有restaurante.php 在我的控制器文件里我有这个 最后,在我的视图文件中,我有一个默认的tmpl文件。显示表格的php 但是元素re

  • 问题内容: 我正在使用python 2.7,我有一些看起来像这样的代码: 此处唯一的依赖项如下:dependent1需要等待任务1-3,Dependent2需要等待任务4-6,而dependent3需要等待依赖项1-2 …以下是可以的:首先运行全部6个任务并行,然后是前两个从属。 我希望尽可能多的任务并行运行,我已经在Google上搜索了一些模块,但是我希望避免使用外部库,并且不确定队列线程技术如