我正在编写一个脚本,用数据包含数百万条记录来填充数据库,因此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
所以我想在我的代码中提出一些建议/更正,关于如何纠正这个问题,以及我是否正在我的代码中正确导入数据库表。感谢!!!