[CONPY-79] MariaDB 5.5 or MySQL: executemany() doesn't work with NULL values Created: 2020-06-16  Updated: 2023-03-28  Resolved: 2020-06-16

Status: Closed
Project: MariaDB Connector/Python
Component/s: DBAPI 2.0
Affects Version/s: 0.9.59
Fix Version/s: 1.0.0

Type: Bug Priority: Major
Reporter: Georg Richter Assignee: Georg Richter
Resolution: Fixed Votes: 0
Labels: None


 Description   

When inserting NULL values to a server which doesn't support BULK statements NULL values are not inserted correctly.

Example:

import mariadb
 
conn=mariadb.connect(user="georg", database="test")
cursor=conn.cursor()
cursor.execute("CREATE TEMPORARY TABLE ind1 (a int, b int default 2,c int)")
vals = [(1,4,3),(None, 2, 3)]
cursor.executemany("INSERT INTO ind1 VALUES (?,?,?)", vals)
cursor.execute("SELECT a, b, c FROM ind1")
row= cursor.fetchall()
print(row)



 Comments   
Comment by Michael Currie [ 2023-03-28 ]

I've tested this code with Python 3.10 and mariadb connector 1.1.6 and it works fine, it returns

[(1, 4, 3), (None, 2, 3)]

, as expected.

However, if you change to vals = [(1,4,3),(None, 2, None)] it fails with:

SystemError: <method '_execute_bulk' of 'mariadb.cursor' objects> returned NULL without setting an exception

(see issue: @PythonCONPY-254)

Generated at Thu Feb 08 03:30:06 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.