Django:OperationalError显示列差异,即使已提供和迁移了正确的列数

时间:2015-10-04 18:50:33

标签: python django sqlite

我正在编写一个脚本,用数据包含数百万条记录来填充数据库,因此ORM脚本(例如使用objects.create,objects.get_or_create)对我来说不起作用。我很快就浏览了如何为我的代码编写原始sql语句,并且遇到了this链接,因此我希望为我的项目复制“create_sqlite_db.py”代码片段。

这是我现在写的与问题相关的代码:

models.py(位置网络(appname) - > models.py)

class Contact(SmartModel):
    c_id = CharField(primary_key=True, max_length=255, blank=False, null=False)
    duns = CharField(primary_key=False, max_length=255, blank=False, null=False)
    fullName = CharField(max_length=255)
    level = CharField(max_length=255)
    title = CharField(max_length=255)

populate_Contact_db.py(位置网络 - > populate_Contact_db.py)

import sqlite3

conn = sqlite3.connect('lpdp2.db') #.db file located in projectname->lpdp2.db
c = conn.cursor()

#c.execute('''CREATE TABLE Contact (c_id TEXT, duns TEXT, fullName TEXT, level TEXT, title TEXT)''')

lst = list()

with open("filename.txt", "rb") as myfile:
    for line in myfile:
        col = line.strip().split("|")
        c_id = col[0]
        duns=col[1]
        name=col[8]
        level=col[11]
        job=col[12]
        lst.extend([(c_id, duns, name, level, job)])

    c.executemany("INSERT INTO web_contact VALUES (?,?,?,?,?)", lst)

conn.commit()
conn.close()

在运行populate_Contact_db时,出现以下错误:

    ---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
C:\Users\Saurabh\workspace\local_mayorbrown\web\populate_Contact_db.py in <module>()
     18         lst.extend([(c_id, duns, name, level, job)])
     19
---> 20     c.executemany("INSERT INTO web_contact VALUES (?,?,?,?,?)", lst)
     21
     22 conn.commit()

OperationalError: table web_contact has 3 columns but 5 values were supplied

在这种情况下,我很困惑,因为我已经使用 makemigrations web - &gt;进行了迁移。迁移 - &gt;执行syncdb

我也试过了:

c.executemany("INSERT INTO web_contact(c_id, duns, fullName, level, title) VALUES", lst)

在这种情况下,我收到以下错误:

---------------------------------------------------------------------------
OperationalError                          Traceback (most recent call last)
C:\Users\Saurabh\workspace\local_mayorbrown\web\populate_Contact_db.py in <module>()
     18         lst.extend([(c_id, duns, name, level, job)])
     19
---> 20     c.executemany("INSERT INTO web_contact(c_id, duns, fullName, level, title) VALUES", lst)
     21
     22 conn.commit()

OperationalError: near "VALUES": syntax error

所以我想在我的代码中提出一些建议/更正,关于如何纠正这个问题,以及我是否正在我的代码中正确导入数据库表。感谢!!!

0 个答案:

没有答案