我有这个代码,我正在尝试将数据行值更新为Null,以测试它是否可以在Selenium Webdriver的前端重新选择。当我针对数据库手动运行sql时它工作正常但是当我尝试参数替换Null为int列时我得到了
这是堆栈中有意义的部分
cursor.execute(query, (REASONS_CREATED[reason_created], order_id))
DataError: invalid input syntax for integer: "Null"
LINE 4: reason_created_id = E'Null'
这是我的代码:
def update_reason_created_on_order(order_id, reason_created, environment='test'):
'''
Updates an order's reason created.
'''
sql_directory = find_path_to_sql_directory()
with open(os.path.join(sql_directory, 'update_reason_created_on_order')) as sql:
cursor = setup_database_cursor(environment)
query = sql.read()
try:
cursor.execute(query, (REASONS_CREATED[reason_created], order_id))
except:
raise
这是我的REASONS_CREATED词典查找的Null条目
REASONS_CREATED = {'NULL': 'Null'}
这是我在外部文件中的sql
UPDATE
order
SET
reason_created_id = %s
WHERE
order_id = %s;
COMMIT;
据我所知,psycopg2进行自动类型转换,并认识到这个reason_created_id是int类型。有谁知道如何将其设置为null?此外,该列可以为空。
答案 0 :(得分:6)
只需使用None
,Python等效于SQL NULL
。
注意:不是字符串"None"
,而是Python单例无(没有引号)。