Postgresql 如何通过alembic(从CSV文件)导入数据?

Postgresql 如何通过alembic(从CSV文件)导入数据?,postgresql,csv,sqlalchemy,alembic,Postgresql,Csv,Sqlalchemy,Alembic,我尝试设计一个数据库模式,并使用alembic(如果有必要的话,还可以使用virtualenv)。我用testdata制作了一些CSV文件。目前,我通过将它们复制到交互式postgresql shell上的db中 /copy table_name FROM '~/path/to/file.csv' WITH CSV; 我想自动化这一点,这样我就不必在通过alembic评分时手动复制每个表。我尝试了以下方法: 在upgrade()方法中的我的alembic版本文件中,在我的表格生成下面,我添加了

我尝试设计一个数据库模式,并使用alembic(如果有必要的话,还可以使用virtualenv)。我用testdata制作了一些CSV文件。目前,我通过将它们复制到交互式postgresql shell上的db中

/copy table_name FROM '~/path/to/file.csv' WITH CSV;
我想自动化这一点,这样我就不必在通过alembic评分时手动复制每个表。我尝试了以下方法:

upgrade()
方法中的我的alembic版本文件中,在我的表格生成下面,我添加了:

op.execute("copy table_name FROM '~/path/to/file.csv' WITH CSV;", execution_options=None)
但它从未找到该文件。这就是错误:

File "/Users/me/Workspace/project/venv/lib/python3.4/site-packages/SQLAlchemy-0.9.4-py3.4-macosx-10.6-intel.egg/sqlalchemy/engine/default.py", line 435, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.OperationalError: (OperationalError) could not open file "~/Workspace/project/path/to/file.csv" for reading: No such file or directory
 "copy table_name FROM '~/Workspace/project/path/to/file.csv' WITH CSV;" {}
我做错了什么

我的问题是我试图运行一个postgresql命令,而我只能使用sqlalchemy命令吗?如果是这样,我将如何通过sqlalchemy实现这一点

我知道alembic中的批量导入选项,但我不希望对所有内容都重新格式化

是否有其他选项可以自动执行复制操作?有更好的工作流吗?

Postgres不会以“您”的身份运行,因此主目录会有所不同。在postgres中输入文件路径时,始终使用文件的完整路径。如果将此作为alembic升级的一部分,则应执行以下操作:

导入操作系统
dirname=os.path.dirname(_文件__)
filename=os.path.join(dirname,'relative/path/to/file/you/want')
op.execute(f“使用CSV从“{file_name}”复制表_name;”,execution_options=None)

太棒了,谢谢!几年前我就停止使用python了,但你说的有道理。为什么我会出错<代码>sqlalchemy.exc.OperationalError:(psycopg2.errors.UnfinedFile)无法打开文件