[英]How to connect to a mysql database on localhost from a python script in a docker container
[英]Python script (PyMySQL) does not connect to database on localhost
當我使用PHP時,只需在php腳本中編寫以下行即可連接到localhost上的phpMyAdmin:
<?php
$dbServername = 'localhost';
$dbUsername = 'root';
$dbPassword = '';
$dbName = 'Work';
$conn = mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);
?>
(此腳本的目錄是/Users/User/.bitnami/stackman/machines/xampp/volumes/root/htdocs/index.php
)
在運行上述行之前,我首先激活了XAMPP
並啟用了端口localhost:8080
。 phpMyAdmin
位於http://localhost:8080/phpmyadmin/
。 這樣可以很好地連接到數據庫。
現在,在Python中,我下載了PyMySQL
,並編寫了以下幾行代碼來完成相同的簡單任務:
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='', db='Work')
(此腳本的目錄是/Users/User/PycharmProjects/First/Main.py
)
但是,當我嘗試運行此命令(首先激活XAMPP
並啟用端口localhost:8080
)之后,出現以下錯誤:
Traceback (most recent call last):
File "/Users/User/Library/Python/3.6/lib/python/site-packages/pymysql/connections.py", line 920, in connect
**kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py", line 724, in create_connection
raise err
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/socket.py", line 713, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 61] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/User/PycharmProjects/GCP-OCR/Main.py", line 14, in <module>
conn = pymysql.connect(host='localhost', user='root', password='', db='Work')
File "/Users/User/Library/Python/3.6/lib/python/site-packages/pymysql/__init__.py", line 90, in Connect
return Connection(*args, **kwargs)
File "/Users/User/Library/Python/3.6/lib/python/site-packages/pymysql/connections.py", line 699, in __init__
self.connect()
File "/Users/User/Library/Python/3.6/lib/python/site-packages/pymysql/connections.py", line 967, in connect
raise exc
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 61] Connection refused)")
如何解決此錯誤,最后將我的Python腳本連接到MySQL數據庫?
此外,請記住,即使我將localhost
替換為127.0.0.1
,也會遇到完全相同的錯誤。 而且,如果我用localhost:3306
替換localhost
,那么我也是一個錯誤( socket.gaierror: [Errno 8] nodename nor servname provided, or not known
)。
PyMySQL接受port作為獨立參數。 試試看:
conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='', db='Work')
參考此鏈接: PyMySQL
只要我按照下面URL中給出的步驟進行操作,它們就會提供示例代碼以連接MySQLdb插件和PyMySQL插件。
對我來說,MySQLdb提供輸出,而PyMySQL提供連接錯誤,就像您得到的一樣。
https://www.a2hosting.in/kb/developer-corner/mysql/connecting-to-mysql-using-python
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.