我已经为SQLAlchemy安装了SQLAlchemy,ipython-sql和IBM_DB支持。最后一个链接是在SQLAlchemy网站上找到的链接https://code.google.com/p/ibm-db/wiki/README。
我在ipython中使用python3作为我的内核,当然我使用了easy_install3
%load_ext sql
%sql ibm_db_sa://bpadmin:bpadmin@192.168.2.128/studAdmin
我收到以下错误:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-2-ca75a37d0cce> in <module>()
----> 1 get_ipython().magic('sql ibm_db_sa://bpadmin:bpadmin@192.168.2.128/studAdmin')
/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py in magic(self, arg_s)
2164 magic_name, _, magic_arg_s = arg_s.partition(' ')
2165 magic_name = magic_name.lstrip(prefilter.ESC_MAGIC)
-> 2166 return self.run_line_magic(magic_name, magic_arg_s)
2167
2168 #-------------------------------------------------------------------------
/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line)
2085 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
2086 with self.builtin_trap:
-> 2087 result = fn(*args,**kwargs)
2088 return result
2089
/usr/local/lib/python3.4/dist-packages/sql/magic.py in execute(self, line, cell, local_ns)
/usr/lib/python3/dist-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
190 # but it's overkill for just that one bit of state.
191 def magic_deco(arg):
--> 192 call = lambda f, *a, **k: f(*a, **k)
193
194 if isinstance(arg, collections.Callable):
/usr/local/lib/python3.4/dist-packages/sql/magic.py in execute(self, line, cell, local_ns)
/usr/lib/python3/dist-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
190 # but it's overkill for just that one bit of state.
191 def magic_deco(arg):
--> 192 call = lambda f, *a, **k: f(*a, **k)
193
194 if isinstance(arg, collections.Callable):
/usr/local/lib/python3.4/dist-packages/sql/magic.py in execute(self, line, cell, local_ns)
73
74 parsed = sql.parse.parse('%s\n%s' % (line, cell), self)
---> 75 conn = sql.connection.Connection.get(parsed['connection'])
76 first_word = parsed['sql'].split(None, 1)[:1]
77 if first_word and first_word[0].lower() == 'persist':
/usr/local/lib/python3.4/dist-packages/sql/connection.py in get(cls, descriptor)
30 cls.current = conn
31 else:
---> 32 cls.current = Connection(descriptor)
33 if cls.current:
34 return cls.current
/usr/local/lib/python3.4/dist-packages/sql/connection.py in __init__(self, connect_str)
10 def __init__(self, connect_str=None):
11 try:
---> 12 engine = sqlalchemy.create_engine(connect_str)
13 except: # TODO: bare except; but what's an ArgumentError?
14 print(self.tell_format())
/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/__init__.py in create_engine(*args, **kwargs)
384 strategy = kwargs.pop('strategy', default_strategy)
385 strategy = strategies.strategies[strategy]
--> 386 return strategy.create(*args, **kwargs)
387
388
/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/strategies.py in create(self, name_or_url, **kwargs)
49 u = url.make_url(name_or_url)
50
---> 51 dialect_cls = u.get_dialect()
52
53 if kwargs.pop('_coerce_config', False):
/usr/local/lib/python3.4/dist-packages/sqlalchemy/engine/url.py in get_dialect(self)
127 else:
128 name = self.drivername.replace('+', '.')
--> 129 cls = registry.load(name)
130 # check for legacy dialects that
131 # would return a module with 'dialect' as the
/usr/local/lib/python3.4/dist-packages/sqlalchemy/util/langhelpers.py in load(self, name)
188 self.group, name):
189 self.impls[name] = impl.load
--> 190 return impl.load()
191
192 raise exc.NoSuchModuleError(
/usr/lib/python3/dist-packages/pkg_resources.py in load(self, require, env, installer)
2086 def load(self, require=True, env=None, installer=None):
2087 if require: self.require(env, installer)
-> 2088 entry = __import__(self.module_name, globals(),globals(), ['__name__'])
2089 for attr in self.attrs:
2090 try:
/usr/local/lib/python3.4/dist-packages/ibm_db_sa-0.3.2-py3.4.egg/ibm_db_sa/__init__.py in <module>()
20 __version__ = '0.3.2'
21
---> 22 from . import ibm_db, pyodbc, base, zxjdbc
23
24
/usr/local/lib/python3.4/dist-packages/ibm_db_sa-0.3.2-py3.4.egg/ibm_db_sa/ibm_db.py in <module>()
18 # +--------------------------------------------------------------------------+
19
---> 20 from .base import DB2ExecutionContext, DB2Dialect
21 from sqlalchemy import processors, types as sa_types, util
22 from sqlalchemy import __version__ as SA_Version
/usr/local/lib/python3.4/dist-packages/ibm_db_sa-0.3.2-py3.4.egg/ibm_db_sa/base.py in <module>()
34 VARCHAR, FLOAT
35
---> 36 SA_Version = [long(ver_token) for ver_token in SA_Version.split('.')[0:2]]
37
38 # as documented from:
/usr/local/lib/python3.4/dist-packages/ibm_db_sa-0.3.2-py3.4.egg/ibm_db_sa/base.py in <listcomp>(.0)
34 VARCHAR, FLOAT
35
---> 36 SA_Version = [long(ver_token) for ver_token in SA_Version.split('.')[0:2]]
37
38 # as documented from:
NameError: name 'long' is not defined
Format: (postgresql|mysql)://username:password@hostname/dbname, or one of dict_keys([])