我得到的错误是:
sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter 'geboorteDatum' [SQL: 'INSERT into klanten (naam, geboorteDatum)VALUES(?, ?)'] [parameters: [{'naam': 'a'}]] (Background on this error at: http://sqlalche.me/e/cd3x)
它来自语句:connection.execute(text(sql), **kwargs)
,其中sql
是:
sql = ("INSERT into klanten "
"(naam, geboorteDatum)"
"VALUES(:naam, :geboorteDatum)")
问题是kwargs
缺少一个键值对(在本例中是针对键:“geboortedatam”)。你知道吗
有没有一种方法可以在缺少键值对的情况下自动使用NULL
。当您使用ORM时,这似乎是可能的。但我不用ORM。你知道吗
尝试:我尝试使用tmp = (collections.defaultdict(lambda : 'NULL', klant_info))
将dict转换为collection.defaultdict
。这个转换工作,但我得到相同的错误。这是由于SQLAlchemy处理字典的方式造成的。从找到的方法_execute_clauseelement
here中可以看出,SQLAlchemy提取所有键,因此使用集合.defaultdict不起作用。你知道吗
谨致问候
如果可以修改
kwargs
,那么可以运行在执行语句之前。如果键在
kwargs
中,它将是一个no操作,如果不是,则在它下面添加None
。你知道吗更新
您可以使用
kwargs.get('geboorteDatum', None)
或者
您可以在插入之前检查**kwargs的geboortedatam键,并在如下变量中断言它:
然后在insert语句中使用变量。你知道吗
相关问题 更多 >
编程相关推荐