【问题标题】:How to connect to MariaDB by means of python?如何通过python连接到MariaDB?
【发布时间】:2021-07-01 08:42:12
【问题描述】:

我正在尝试从 MariaDB 服务器(位于不同的网络中)检索一些数据。 我可以通过 phpmyadmin 访问服务器,但无法通过 python 脚本连接到它。 继MariaDB documentation之后,我编写了如下Python代码:

# Module Imports
import mariadb
import sys

# Connect to MariaDB Platform
try:
    conn = mariadb.connect(
        user="myUSER",
        password= "myPSW",
        host="localhost"
        port=3306,
        database="myDATABASE"

    )
except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)

# Get Cursor
cur = conn.cursor()

这不起作用,我收到以下错误:

Error connecting to MariaDB Platform: Can't connect to MySQL server on 'localhost' (10061)
Process finished with exit code 1

我从这里检索了 MariaDB 信息:

我错过了一些重要的点吗?

【问题讨论】:

  • here 的一些答案可能会有所帮助。请注意,服务器使用的是 UNIX 套接字。

标签: python mariadb


【解决方案1】:

我发现使用127.0.0.1 而不是localhost 解决了我的问题。

安装 MariaDB Connector/C,这是一个依赖项。

sudo apt-get install libmariadb3 libmariadb-dev

使用 PIP 安装 MariaDB Connector/Python。

pip3 install mariadb

这两个都对我有用:

import mariadb
import sys

try:
    # connection parameters
    conn_params = {
        'user' : "harley",
        'password' : "KTJ7UCS74mv]hh[I",
        'host' : "127.0.0.1",
        'port' : 3306,
        'database' : "phishing_emails"
    }

    # establish a connection
    connection = mariadb.connect(**conn_params)
    cursor = connection.cursor()
    
except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)
    
print(cursor)

或者……

import mariadb
import sys

# Connect to MariaDB Platform
try:
    connection = mariadb.connect(
        user = "harley",
        password = "KTJ7UCS74mv]hh[I",
        host = "127.0.0.1",
        port = 3306,
        database = "phishing_emails"

    )
    
    # Get Cursor
    cursor = connection.cursor()

except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)

print(cursor)

【讨论】:

    【解决方案2】:

    安装 MySQL 驱动程序 Python 需要一个 MySQL 驱动程序来访问 MySQL 数据库。

    我建议您使用 PIP 安装“MySQL 连接器”。

    PIP 很可能已经安装在您的 Python 环境中。

    将命令行导航到 PIP 的位置,然后键入以下内容:

    下载并安装“MySQL 连接器”:

    C:\Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>python -m pip install mysql-connector-python
    

    现在您已经下载并安装了 MySQL 驱动程序。

    测试 MySQL 连接器 要测试是否安装成功,或者您是否已经安装了“MySQL 连接器”,请创建一个包含以下内容的 Python 页面:

    测试:

        import mysql.connector
    mydb = mysql.connector.connect(
      host="localhost",
      user="yourusername",
      password="yourpassword"
    )
    print(mydb)
    

    【讨论】:

    • 感谢您的评论,@Somnath 我尝试了您的建议,但出现以下错误:` File "C:\Users\ER180124\.conda\envs\PrognosticEnv\lib\site-packages\ mysql\connector\network.py", line 576, in open_connection raise errors.InterfaceError(mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (10061 No connection could be made because目标机器主动拒绝)`
    • import mysql.connector mydb = mysql.connector.connect(host="localhost", user="yourusername", password="yourpassword" ) print(mydb) 使用这个不要使用端口号跨度>
    • 如果我不指定端口号,默认为 3306... 所以没有任何变化
    • @Somnath OP 已经安装了 mariadb 连接器,否则他将无法需要它。问题是使用 localhost 而不是 127.0.0.1
    猜你喜欢
    • 2019-06-12
    • 2019-03-06
    • 2018-07-26
    • 2020-10-10
    • 1970-01-01
    • 2018-05-20
    • 2018-09-12
    • 2018-08-03
    • 1970-01-01
    相关资源
    最近更新 更多