使用dicts列表时插入的SQL Alchemy问题

时间:2015-02-17 00:30:20

标签: python sqlite sqlalchemy

我正在使用带有后端的SQL ALCHEMY ORM作为sqlite。我有明确的ORM映射和一个映射

class Tasks(Base):
__tablename__ = "tasks"

task_id = Column(Integer, primary_key=True)
task_name = Column(String,nullable=False)

def __init__(self, task_id,task_name):
    self.task_id = task_id
    self.task_name = task_name

我有一个方法,用几个初始值填充表任务。

def populate_tasks_table():
'''
Add default tasks to task table.
'''
tasks_dict = {1:'modelling',2:'design',3:'personal_time',
              4:'breaks',5:'discussion',6:'Client Meeting',7:'Misc'}
tasks_dict = [{'task_id':task_id,'task_name':task_name} 
              for task_id,task_name in tasks_dict.iteritems()]

connection = engine.connect()
metadata = MetaData()
task_table = Table("tasks", metadata)


##Populate the table with default tasks
connection.execute(task_table.insert(),tasks_dict)

当我执行此操作时,它会抛出sqlalchemy.exc.IntegrityError:(IntegrityError)tasks.task_name可能不为NULL u' INSERT INTO tasks DEFAULT VALUES' ((),(),(),(),(),(),())。

我在创建引擎时尝试打开echo参数,该引擎显示引擎尝试执行的所有查询。它显示以下日志。

2015-02-16 16:13:43,478 INFO sqlalchemy.engine.base.Engine INSERT INTO tasks DEFAULT VALUES

2015-02-16 16:13:43,478 INFO sqlalchemy.engine.base.Engine((),(),(),(),(),(),())

不知道为什么引擎试图在表格中插入空白值,尽管我提供了一个dicts列表。

0 个答案:

没有答案