在Ubuntu 19.10 Eoan Ermine上使用MariaDB Connector/Python

总结

    • Ubuntu 19.10 Eoan Ermine に MariaDB Connector/Python をインストールする

 

    Python による MariaDB Connector/Python を使用したサンプルコードを示す

这次的环境

    • Ubuntu 19.10 Eoan Ermine

 

    • MariaDB 10.3.22

 

    • Python 3.7.5

 

    MariaDB Connector/Python 0.9.54-beta

MariaDB Connector/Python 是什么?MariaDB Connector/Python 是用于访问MariaDB和MySQL的MariaDB官方库。它符合Python DB API 2.0(PEP-249)规范。

Python – MariaDB 知识库

MariaDB Connector/Python 允许使用 Python 程序访问 MariaDB 和 MySQL 数据库,使用与 Python DB API 2.0(PEP-249)兼容的 API。它是用 C 编写的,并使用 MariaDB Connector/C 客户端库进行客户端服务器通信。

截至2020年3月6日,MariaDB Connector/Python仍处于测试版状态。

MariaDB Connector/Python 0.9.54-beta 发布说明- MariaDB 知识库

这是MariaDB Connector/Python的beta版本,仅供测试使用,并不适用于生产环境。

请勿在生产环境中使用beta版本!

MariaDB Connector/Python 0.9.52 Alpha 发布

以前一直都是使用MySQL Connector,但是现在,就像其他编程语言一样,MariaDB Corporation正式提供了Connector。

MariaDB Connector/Python 0.9.52 Alpha 发布

使用方法与现有的MySQL Connector相同。

安装pip3命令为了安装MariaDB Connector/Python,需要提前安装pip3。

$ sudo apt install python3-pip

据说Ubuntu的pip3命令经过了独特的定制。

pip – Python 日本

Debian软件包的pip命令(python3-pip / python-pip)经过了特定的修改,如果以普通用户身份执行pip install命令,它会自动加上–user选项。

安装MariaDB Connector/Python使用pip3命令安装MariaDB Connector/Python的mariadb包。

$ pip3 install --pre mariadb

如果在安装过程中出现以下错误,那么说明 mariadb_config 不完整。

    /bin/sh: 1: mariadb_config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-o123mtwk/mariadb/setup.py", line 24, in <module>
        cfg = get_config(options)
      File "/tmp/pip-install-o123mtwk/mariadb/mariadb_posix.py", line 49, in get_config
        cc_version = mariadb_config(config_prg, "cc_version")
      File "/tmp/pip-install-o123mtwk/mariadb/mariadb_posix.py", line 27, in mariadb_config
        "mariadb_config not found.\nPlease make sure, that MariaDB Connector/C is installed on your system, edit the configuration file 'site.cfg' and set the 'mariadb_config'\noption, which should point to the mariadb_config utility.")
    OSError: mariadb_config not found.
    Please make sure, that MariaDB Connector/C is installed on your system, edit the configuration file 'site.cfg' and set the 'mariadb_config'
    option, which should point to the mariadb_config utility.

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-o123mtwk/mariadb/

在安装 Ubuntu 的 libmariadb-dev 包(其中包含了 mariadb_config)后,再次使用 pip3 命令安装 mariadb 包。

$ sudo apt install libmariadb-dev
$ pip3 install --pre mariadb

Ubuntu – eoan的libmariadb-dev软件包的详细信息

MariaDB数据库开发文件

Ubuntu—软件包文件列表:libmariadb-dev/eoan/amd64

/usr/bin/mariadb_config 可以被转述为:

马里亚DB配置文件

MariaDB 连接器/Python 的文档MariaDB的文件不太好理解。根据需要,还可以参考GitHub上的源代码和MySQL Connector/Python的文档。

    • Home · mariadb-corporation/mariadb-connector-python Wiki

 

    • MariaDB Connector/Python 1.0 — MariaDB Enterprise documentation

 

    • mariadb-corporation/mariadb-connector-python: MariaDB Connector/Python

 

    • MySQL :: MySQL Connector/Python Developer Guide

 

    MySQL :: MySQL Connector/Python Developer Guide :: 10 Connector/Python API Reference

插入,选择,更新的示例代码。
我們可以運行以下類似的 Python 腳本。

import time
import mariadb

# connect db
conn = mariadb.connect(host="localhost",
                       user="your_app",
                       password="your_app_password",
                       database="test_db")
cursor = conn.cursor(named_tuple=True)

# insert
insert_sql = "INSERT INTO test_table (name, created_at) VALUES (%s, %s)"
name = "寿司ビール??????文字化けしないで"
created_at = mariadb.TimestampFromTicks(time.time())
cursor.execute(insert_sql, (name, created_at))
conn.commit()

# select
select_sql = "SELECT id, name, created_at FROM test_table"
cursor.execute(select_sql)
for row in cursor:
  print(f"{row.id}: {row.name} ({row.created_at})")
  target_id = row.id

# update
update_sql = "UPDATE test_table set name=%s WHERE id=%s"
cursor.execute(update_sql, ("Alice", target_id))
conn.commit()

conn.close()

请查阅相关资料

    • Python – MariaDB Knowledge Base

 

    mariadb · PyPI

bannerAds