- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试使用以下 RunSQL
命令运行迁移:
class Migration(migrations.Migration):
operations = [
RunSQL(
r'''
COPY auth_group (id, name) FROM stdin;
1 TEST-GROUP
\.
''')]
失败是这样的:
File "/home/foo/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 63, in execute
return self.cursor.execute(sql)
django.db.utils.ProgrammingError: syntax error at or near "1"
LINE 3: 1 TEST-GROUP
是否RunSQL
中不允许COPY
?
我们使用 psycopg2
最佳答案
psycopg2
驱动程序公开了 copy_to
和 copy_from
方法,可用于实现与 psql
相同的行为> 客户;关键是使用 RunPython
操作而不是 RunSQL
操作。
你需要:
operations
列表中的 RunPython
操作以调用该函数示例,使用 Django 1.8.4、Python 2.7.10、psycopg2 2.6.1 -
from django.db import models, migrations
def forwards(apps, schema_editor):
with open('./path/to/file.csv', 'r') as infile:
with schema_editor.connection.cursor() as stmt:
#for finer control, use copy_expert instead
stmt.copy_from(infile, 'your_table', sep=',')
class Migration(migrations.Migration):
dependencies = [
]
operations = [
#this runs your function
migrations.RunPython(forwards)
]
一些注意事项:
copy
的file
对象本质上是语句中的STDIN
。copy_expert
您可以控制所有与命令相同的选项:格式、标题、定界符等。有关 copy_*
方法的更多信息,请查看 psycopg2 文档:http://initd.org/psycopg/docs/cursor.html
关于Django:RunSQL:使用 PostgreSQL COPY 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875709/
我正在尝试使用 migrations.RunSQL Django 迁移来运行一些任意 SQL 代码。我想仅针对某些数据库后端运行此迁移(例如仅针对 postgres)。 我想to use someth
我有一些代码可以重新排列表单上的一些项目,但只有一个 SQL 查询。我的所有表在代码运行之前都没有锁定,但由于某种原因,我在运行时收到错误: DoCmd.RunSQL ("Select * Into
重新设计我的雇主数据库的某些部分时,我遇到了最初创建它的人编写的子例程,这些子例程是这样的: DoCmd.OpenQuery "qry1" DoCmd.OpenQuery "qry2" DoCmd.O
我尝试使用以下 RunSQL 命令运行迁移: class Migration(migrations.Migration): operations = [ RunSQL( r''
我在 Visual Studio 2010 中编写了一个小程序来打开 Access 数据库,在表中输入一个值,然后打开一个表单。非常简单,该程序在我的笔记本电脑上运行良好。 当我尝试在第二台 PC 上
我正在使用 DoCmd.RunSQL 方法根据用户在表单中执行的操作插入和删除记录。它工作正常,但在删除或附加记录之前要求确认。如何删除确认。 顺便说一下,BeforeDelConfirm 事件似乎没
我正在尝试使用 migrations.RunSQL 删除索引,但我遇到了不存在的问题,有没有办法仅在存在的情况下删除索引?类似 migrations.RunSQL("DROP INDEX IF EXI
自从安装 the windows update for Office 2010 resolving KB 4484127我在执行包含 WHERE 子句的查询时遇到错误。 例如执行此查询: DoCmd.
我是一名优秀的程序员,十分优秀!