小编ein*_*bst的帖子

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

我尝试设计数据库架构并使用Alembic(如果重要的话,请使用virtualenv)。我用testdata制作了一些CSV文件。目前我通过以下方式将它们复制到交互式postgresql shell的db中:

/copy table_name FROM '~/path/to/file.csv' WITH CSV;
Run Code Online (Sandbox Code Playgroud)

我想自动执行此操作,因此在通过Alembic进行分级升级时,不必手动复制每个表。我尝试了以下方法:

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

op.execute("copy table_name FROM '~/path/to/file.csv' WITH CSV;", execution_options=None)
Run Code Online (Sandbox Code Playgroud)

但是它永远找不到文件。这是错误:

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;" {}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

我尝试运行只能使用sqlalchemy命令的postgresql命令是我的问题吗?如果是这样,我将如何通过sqlalchemy做到这一点?

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

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

csv postgresql sqlalchemy alembic

5
推荐指数
1
解决办法
440
查看次数

如何使用Rails/ActiveRecord将postgreSQL中的主键类型更改为bigserial

如何在postgres中将现有表的主键列类型从serial(int)更改为bigserial(bigint)?

该数据库由Rails应用程序使用.我是否需要对应用进行任何更改?

postgresql activerecord ruby-on-rails primary-key

3
推荐指数
2
解决办法
5178
查看次数