On 18/01/2015 at 10:35, xxxxxxxx wrote:
Is it possible?
Are there any libraries available?
My MySQL database is online.
On 18/01/2015 at 10:35, xxxxxxxx wrote:
Is it possible?
Are there any libraries available?
My MySQL database is online.
On 19/01/2015 at 01:16, xxxxxxxx wrote:
Have you tried this? : https://pypi.python.org/pypi/MySQL-python/1.2.5
Haven't tried it but is supposed to be ok.
-b
On 19/01/2015 at 01:36, xxxxxxxx wrote:
I found that but to include that in my plugins I would have to force users to install that, isn't it?
On 23/01/2015 at 17:44, xxxxxxxx wrote:
Hi Rui,
Check out Niklas' C4D Tools
There he mentions this bit of code:
# Store the old module configuration.
old_modules = sys.modules.copy()
# Import your stuff, for example:
lib_path = os.path.join(os.path.dirname(__file__), 'lib')
sys.path.insert(0, lib_path)
try:
import c4dtools
finally:
sys.path.pop(0)
# Restore the previous module configuration making sure to not
# remove modules not loaded from the local libraries folder.
for k, v in sys.modules.items() :
if k not in old_modules and hasattr(v, '__file__') or not v:
if not v or v.__file__.startswith(lib_path) :
sys.modules.pop(k)
else:
sys.modules[k] = v
res, _ = c4dtools.prepare(__file__, __res__)
You should be able to put the MySQL library in a lib folder next to your source file, and import it using something like the above code.
On 23/01/2015 at 17:55, xxxxxxxx wrote:
Hey,
C4dtools is old, I should update it some time. :) Today, I prefer to paste this snippet into my plugin:
>
> import os, sys, glob
>
>
> class localimport(object) :
>
>
> _modulecache = []
>
>
> _eggs = staticmethod(lambda x: glob.glob(os.path.join(x, '*.egg')))
>
>
> def __init__(self, libpath, autoeggs=False, isolate=False, path=os.path) :
>
>
> if not path.isabs(libpath) :
>
>
> libpath = path.join(path.dirname(path.abspath(__file__)), libpath)
>
>
> self.libpath = libpath; self.autoeggs = autoeggs; self.isolate = isolate
>
>
> def __enter__(self) :
>
>
> self._path, self._mpath = list(sys.path), list(sys.meta_path)
>
>
> self._mods = frozenset(sys.modules.keys())
>
>
> sys.path.append(self.libpath)
>
>
> sys.path.extend(self._eggs(self.libpath) if self.autoeggs else [])
>
>
> def __exit__(self, *args) :
>
>
> sys.path[:] = self._path; sys.meta_path[:] = self._mpath
>
>
> for key in sys.modules.keys() :
>
>
> if key not in self._mods and self._islocal(sys.modules[key]) :
>
>
> localimport._modulecache.append(sys.modules.pop(key))
>
>
> def _islocal(self, mod) :
>
>
> if self.isolate: return True
>
>
> filename = getattr(mod, '__file__', None)
>
>
> if filename:
>
>
> try: s = os.path.relpath(filename, self.libpath)
>
>
> except ValueError: return False
>
>
> else: return s == os.curdir or not s.startswith(os.pardir)
>
>
> else: return False
And then use it like this:
>
> with localimport('relative/path/to/lib/folder') :
>
>
> import some_package
You can always find the newest version in this gist.