gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 20:57:08 26 4
gpt4 key购买 nike

我有一个存储在 .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())

但是 psycopg2 在光标上没有 executescript 方法。那么,我该如何实现呢?

最佳答案

你可以直接使用执行:

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

虽然您可能想要 set psycopg2 to autocommit mode first所以你可以使用脚本自己的事务管理。

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

请注意,这适用于:

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

...因此不适用于来自 pg_dump

的转储

关于python - 在 Python 中的 psycopg2 中执行 .sql 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17261061/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com