【发布时间】:2020-07-10 01:29:11
【问题描述】:
我正在使用 sqlalchemy 和 pandas 连接到 db 并从 sql 表创建数据框。
这是我的代码:
port=3306
unix_socket='/var/lib/mysql/mysql.sock'
conn = "mysql://user:pwd@localhost/dbname?port=3306?unix_socket=/var/lib/mysql/mysql.sock"
_engine = create_engine(conn)
print conn
print _engine
db_conn=_engine.connect()
输出:
Traceback (most recent call last):
File "runner_train_test.py", line 37, in <module>
_engine.connect()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base. py", line 2018, in connect
return self._connection_cls(self, **kwargs)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base. py", line 72, in __init__
if connection is not None else engine.raw_connection()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base. py", line 2104, in raw_connection
self.pool.unique_connection, _connection)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/base. py", line 2074, in _wrap_pool_connect
return fn()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 318, in unique_connection
return _ConnectionFairy._checkout(self)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 713, in _checkout
fairy = _ConnectionRecord.checkout(pool)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 480, in checkout
rec = pool._do_get()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 1060, in _do_get
self._dec_overflow()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/util/langhel pers.py", line 60, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 1057, in _do_get
return self._create_connection()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 323, in _create_connection
return _ConnectionRecord(self)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 449, in __init__
self.connection = self.__connect()
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/pool.py", li ne 607, in __connect
connection = self.__pool._invoke_creator(self)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/strat egies.py", line 97, in connect
return dialect.connect(*cargs, **cparams)
File "/usr/local/anaconda2/lib/python2.7/site-packages/sqlalchemy/engine/defau lt.py", line 385, in connect
return self.dbapi.connect(*cargs, **cparams)
File "/usr/local/anaconda2/lib/python2.7/site-packages/MySQLdb/__init__.py", l ine 81, in Connect
return Connection(*args, **kwargs)
File "/usr/local/anaconda2/lib/python2.7/site-packages/MySQLdb/connections.py" , line 193, in __init__
super(Connection, self).__init__(*args, **kwargs2)
TypeError: an integer is required
【问题讨论】:
-
Aaaaaaaahhhhhh 请用四个空格格式化代码!!
-
我认为你不能使用 unixsocket 和端口。
-
@syntonym 所说的。在 DB url 中还有两个
?可能会丢掉一些东西。很确定它通过"3306?unix_socket=/var/lib/mysql/mysql.sock"作为端口,这显然不是一个整数。
标签: python python-2.7 sqlalchemy