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

在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



 类似资料: