Python 在SQLAlchemy中创建引擎:无法将主机名转换为地址:名称或服务未知

Python 在SQLAlchemy中创建引擎:无法将主机名转换为地址:名称或服务未知,python,sqlalchemy,psycopg2,Python,Sqlalchemy,Psycopg2,我在LinuxMint17.2中执行以下操作 我安装了必要的模块,创建了数据库服务器,并创建了一个名为“dbconstants.py”的附加文件,其中包含数据库详细信息 username = 'postgres' password = 'postgres' dbname = 'mydb' 我正试图按照以下方式部分执行该项目: username = 'postgres' password = 'postgres' dbname = 'localhost' python-m plagcomps

我在LinuxMint17.2中执行以下操作

我安装了必要的模块,创建了数据库服务器,并创建了一个名为“dbconstants.py”的附加文件,其中包含数据库详细信息

username = 'postgres'
password = 'postgres'
dbname = 'mydb'

我正试图按照以下方式部分执行该项目:

username = 'postgres'
password = 'postgres'
dbname = 'localhost'
python-m plagcomps.extrinsic.extrinsic\u测试

然而,我收到了以下错误

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 151, in _run_module_as_main
    mod_name, loader, code, fname = _get_module_details(mod_name)
  File "/usr/lib/python2.7/runpy.py", line 101, in _get_module_details
    loader = get_loader(mod_name)
  File "/usr/lib/python2.7/pkgutil.py", line 464, in get_loader
    return find_loader(fullname)
  File "/usr/lib/python2.7/pkgutil.py", line 474, in find_loader
    for importer in iter_importers(fullname):
  File "/usr/lib/python2.7/pkgutil.py", line 430, in iter_importers
    __import__(pkg)
  File "plagcomps/__init__.py", line 8, in <module>
    import intrinsic
  File "plagcomps/intrinsic/__init__.py", line 2, in <module>
    from cluster import cluster
  File "plagcomps/intrinsic/cluster.py", line 4, in <module>
    import classify
  File "plagcomps/intrinsic/classify.py", line 173, in <module>
    Base.metadata.create_all(engine)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/sql/schema.py", line 3687, in create_all
    tables=tables)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1855, in _run_visitor
    with self._optional_conn_ctx_manager(connection) as conn:
  File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1848, in _optional_conn_ctx_manager
    with self.contextual_connect() as conn:
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2039, in contextual_connect
    self._wrap_pool_connect(self.pool.connect, None),
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2078, in _wrap_pool_connect
    e, dialect, self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 1405, in _handle_dbapi_exception_noconnection
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/compat.py", line 199, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/base.py", line 2074, in _wrap_pool_connect
    return fn()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 376, in connect
    return _ConnectionFairy._checkout(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 713, in _checkout
    fairy = _ConnectionRecord.checkout(pool)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 480, in checkout
    rec = pool._do_get()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 1060, in _do_get
    self._dec_overflow()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/util/langhelpers.py", line 60, in __exit__
    compat.reraise(exc_type, exc_value, exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 1057, in _do_get
    return self._create_connection()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 323, in _create_connection
    return _ConnectionRecord(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 449, in __init__
    self.connection = self.__connect()
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 607, in __connect
    connection = self.__pool._invoke_creator(self)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/strategies.py", line 97, in connect
    return dialect.connect(*cargs, **cparams)
  File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/engine/default.py", line 385, in connect
    return self.dbapi.connect(*cargs, **cparams)
  File "/usr/lib/python2.7/dist-packages/psycopg2/__init__.py", line 179, in connect
    connection_factory=connection_factory, async=async)
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not translate host name "mydb" to address: Name or service not known
然后我收到以下错误:

/usr/lib/pymodules/python2.7/matplotlib/__init__.py:1173: UserWarning:  This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.

  warnings.warn(_use_error_msg)
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/home/eadaradhiraj/Downloads/plagcomps/extrinsic/extrinsic_testing.py", line 615, in <module>
    save_to_db=False, ignore_high_obfuscation=False, show_false_negpos_info=False, get_best_of=False)
  File "/home/eadaradhiraj/Downloads/plagcomps/extrinsic/extrinsic_testing.py", line 553, in test
    mid = fingerprintstorage.get_mid(method, n, k, atom_type, hash_size)
  File "plagcomps/extrinsic/fingerprintstorage.py", line 313, in get_mid
    with _get_connection(autocommit=True) as conn:
  File "plagcomps/extrinsic/fingerprintstorage.py", line 92, in _get_connection
    conn = psycopg2.connect(user = username, password = password, database = dbname.split("/")[1], host="localhost", port = 5432)
IndexError: list index out of range
/usr/lib/pymodules/python2.7/matplotlib/_init__u;.py:1173:UserWarning:调用matplotlib.use()无效
因为已经选择了后端;
matplotlib.use()必须在*pylab、matplotlib.pyplot、,
或matplotlib.backends首次导入。
警告。警告(使用错误消息)
回溯(最近一次呼叫最后一次):
文件“/usr/lib/python2.7/runpy.py”,第162行,在运行模块中作为主模块
“\uuuuu main\uuuuuuuuuuuuuuuuuuuuuuuuu”,fname,loader,pkg\u name)
文件“/usr/lib/python2.7/runpy.py”,第72行,在运行代码中
run_globals中的exec代码
文件“/home/eadaradhiraj/Downloads/plagcomps/extrinsic/extrinsic_testing.py”,第615行,在
保存到\u db=False,忽略\u high\u fuzzation=False,显示\u False\u negpos\u info=False,获取\u best\u of=False)
文件“/home/eadaradhiraj/Downloads/plagcomps/extrinsic/extrinsic_testing.py”,第553行,测试中
mid=指纹存储。获取mid(方法,n,k,原子类型,散列大小)
文件“plagcomps/extrinsic/fingerprintstorage.py”,第313行,在get_mid中
使用_get_连接(autocommit=True)作为连接:
文件“plagcomps/extrinsic/fingerprintstorage.py”,第92行,in\u get\u connection
conn=psycopg2.connect(user=username,password=password,database=dbname.split(“/”[1],host=“localhost”,port=5432)
索引器:列表索引超出范围

刚刚看了一下这个项目。在
dbconstants.py
中,设置

dbname='localhost:5432/mydb'
错误:psycopg2.OperationalError:无法将主机名“localhost”转换为地址:名称或服务未知

就我而言

我的局域网电缆与系统连接不正确。这就是为什么我会犯这个错误。所以这可能是这个问题的一种情况


连接LAN电缆后,再次运行run命令。问题得到解决。

您正在使用
mydb
作为主机名。您的主机名应该是
localhost
。从这个问题来看,不清楚这是在什么地方定义的。@JoeYoung实际上,我是个新手。这不是我的代码。我也改变了它,仍然没有幸运的道歉,只是意识到这是其他人在github上的项目。我看了一下代码,它看起来希望
dbname
hostname:port\u number/database\u name
的形式出现,这就是它包含
dbname.split(“/”[1]
的原因。请参阅我的答案以了解解决方法