使用Django db API动态创建或复制表

时间:2010-02-26 11:42:28

标签: django django-models

我怎么能像执行什么样的smth CREATE TABLE table_b AS SELECT * FROM table_a
使用Django db API?

3 个答案:

答案 0 :(得分:3)

作为替代方案,您可以利用South,因为它具有用于创建和删除表的API。

http://south.aeracode.org/wiki/db.create_table

我没有在迁移环境之外尝试过这个,所以不能保证它可以开箱即用。

答案 1 :(得分:2)

Django的ORM不适合这样的事情。我建议你做错事,但你没有解释为什么要这样做,所以我不能发表评论。

反正。您可以使用Django的原始SQL:

def my_custom_sql():
    from django.db import connection, transaction
    cursor = connection.cursor()

    # Data modifying operation - commit required
    cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
    transaction.commit_unless_managed()

    # Data retrieval operation - no commit required
    cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
    row = cursor.fetchone()

    return row

http://docs.djangoproject.com/en/dev/topics/db/sql/#executing-custom-sql-directly

答案 2 :(得分:1)

你做不到。你必须放到DB-API