今天根據廖雪峰大神的教程制作個人博客,在一個測驗模塊的地方卡住了,經過檢查發現是aiomysql的模塊有問題,現在我描述一下情況,求各位大神解惑:
import asyncio
import aiomysql
loop = asyncio.get_event_loop()
@asyncio.coroutine
def go():
pool = yield from aiomysql.create_pool(host='127.0.0.1', port=3306,
user='root', password='',
db='mysql', loop=loop)
with (yield from pool) as conn:
cur = yield from conn.cursor()
yield from cur.execute("SELECT 10")
# print(cur.description)
(r,) = yield from cur.fetchone()
assert r == 10
pool.close()
yield from pool.wait_closed()
loop.run_until_complete(go())
上面是aiomysql官方檔案的一個測驗用例,但是我運行后得到這樣的錯誤:
C:\Data\Notepad++>test.py
Traceback (most recent call last):
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\connection.py", line 439, in _connect
loop=self._loop)
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\streams.py", line 64, in open_connection
lambda: protocol, host, port, **kwds)
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 651, in create_connection
raise exceptions[0]
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 638, in create_connection
yield from self.sock_connect(sock, address)
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 385, in __iter__
yield self # This tells Task to wait for completion.
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 288, in _wakeup
value = future.result()
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 274, in result
raise self._exception
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\selector_events.py", line 436, in _sock_connect_cb
raise OSError(err, 'Connect call failed %s' % (address,))
ConnectionRefusedError: [Errno 10061] Connect call failed ('127.0.0.1', 3306)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "C:\Data\Notepad++\test.py", line 21, in <module>
loop.run_until_complete(go())
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\base_events.py", line 342, in run_until_complete
return future.result()
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\futures.py", line 274, in result
raise self._exception
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\asyncio\tasks.py", line 237, in _step
result = coro.throw(exc)
File "C:\Data\Notepad++\test.py", line 10, in go
db='mysql', loop=loop)
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\utils.py", line 52, in __iter__
resp = yield from self._coro
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\pool.py", line 28, in _create_pool
yield from pool._fill_free_pool(False)
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\pool.py", line 163, in _fill_free_pool
**self._conn_kwargs)
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\utils.py", line 52, in __iter__
resp = yield from self._coro
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\connection.py", line 76, in _connect
yield from conn._connect()
File "C:\Users\司勝博\AppData\Local\Programs\Python\Python35\lib\site-packages\aiomysql\connection.py", line 467, in _connect
self._host) from e
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1'")
有人說是因為aimysql和pysql的版本不一致導致的,我用pip命令重裝了這兩個模塊好幾遍結果都不行,然后我又單獨裝了pymysql模塊,發現
,裝的版本是最新的(aiomysql附帶裝的pymysql不是最新的),但是也不行,還是一樣的錯.
********************************************************************************************
下面是我的兩個模塊的版本.(兩種情況均是一樣的錯誤)


我的電腦是win7系統,Mysql 是5.6.24。請幫我看下是什么問題

uj5u.com熱心網友回復:
報錯資訊上面說 連接mysql失敗, 確認mysql是否安裝,是否能進入mysql命令列uj5u.com熱心網友回復:
......肯定安裝了啊,用其他的方式都是可以連接的,應該是庫沖突造成的.
uj5u.com熱心網友回復:
你的意思是 下面代碼能運行正常????
import pymysql
conn = pymysql.connect(host='127.0.0.1', port=3306,
user='root', password='',
db='mysql')
cur = conn.cursor()
cur.execute("SELECT Host,User FROM user")
uj5u.com熱心網友回復:
同問,,也是在這個問題卡住了,但是import aiomysql
conn = aiomysql.connect(host='127.0.0.1', port=3306, user='sky', password='sky', db='world') # 連接mysql的world資料庫
卻是可以的,但是沒法創建cursor
uj5u.com熱心網友回復:
確定password沒設定?uj5u.com熱心網友回復:
在3.7中可以使用aiomysql.cursors.Cursor(conn)來創建cursor。可以嘗試一下。轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/86688.html
