import MySQLdb
try:
dbcon = MySQLdb.connect(host=host_name, user=user_name,
passwd=password, db=db_name)
except MySQLdb.Error:
pass
getting this pylint warning Module 'MySQLdb' has no 'Error' member (no-member)
It may help to use the
--extension-pkg-whitelist
option:pylint parses (by default) the source files, but in Python the shape of a module can change at runtime from the shape defined in the source file. This option tells pylint to actually import the specified module, and use the runtime definition.
Note that since the MySQLdb package wraps a C extension, you have to pass the name of the C extension (
_mysql
) instead of the package name (MySQLdb
). (source)You could use the
unsafe-load-any-extension
option, but that would load every available extension, with its' (potentially dangerous) initialization code.extension-pkg-whitelist
is safer, because it only loads the specified modules.The Best:
Using
extension-pkg-whitelist
option:PyLint parses (by default) the source files, but in Python the shape of a module can change at runtime from the shape defined in the source file. This option tells PyLint to actually import the specified module, and use the runtime definition.
Note that since the MySQLdb package wraps a C extension, you have to pass the name of the C extension (
_mysql
) instead of the package name (MySQLdb
). (source)Not Bad:
Using
unsafe-load-any-extension
optionYou could use the
unsafe-load-any-extension
option, but that would load every available extension, with its' (potentially dangerous) initialization code.extension-pkg-whitelist
is safer, because it only loads the specified modules.The Worst:
Using
disable
optionIt doesn't really solve the issue, but only makes PyLint silent.
Thanks to @PCManticore, the maintainer of PyLint. Here's the comment of the maintainer.
Thanks to @ZevSpitz, the contributor of the best answer and this not bad answer.