在 Ubuntu 上“连接 Python 数据库”通常包含 两层意思:
下面我以 最常见的三种数据库 为例,一步步说明。
python3 --version
import sqlite3
conn = sqlite3.connect("test.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS user (id INTEGER, name TEXT)")
cursor.execute("INSERT INTO user VALUES (1, 'Alice')")
conn.commit()
conn.close()
✅ 无需安装数据库服务,适合学习和小型项目
sudo apt update
sudo apt install mysql-server
启动并设置开机启动:
sudo systemctl start mysql
sudo systemctl enable mysql
初始化安全设置:
sudo mysql_secure_installation
sudo mysql
CREATE DATABASE testdb;
CREATE USER 'python'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON testdb.* TO 'python'@'localhost';
FLUSH PRIVILEGES;
EXIT;
pip install pymysql
# 或
pip install mysql-connector-python
import pymysql
conn = pymysql.connect(
host="localhost",
user="python",
password="123456",
database="testdb"
)
cursor = conn.cursor()
cursor.execute("SHOW TABLES")
print(cursor.fetchall())
conn.close()
sudo apt install postgresql postgresql-contrib
启动:
sudo systemctl start postgresql
sudo -u postgres psql
CREATE DATABASE testdb;
CREATE USER pyuser WITH PASSWORD '123456';
GRANT ALL PRIVILEGES ON DATABASE testdb TO pyuser;
pip install psycopg2
import psycopg2
conn = psycopg2.connect(
host="localhost",
user="pyuser",
password="123456",
dbname="testdb"
)
cur = conn.cursor()
cur.execute("SELECT version()")
print(cur.fetchone())
conn.close()
systemctl status mysql
使用:
python3 -m pip install xxx
修改配置文件(如 MySQL):
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
注释:
bind-address = 127.0.0.1
| 数据库 | Python 库 | 是否需安装服务 |
|---|---|---|
| SQLite | sqlite3 | ❌ |
| MySQL | pymysql | ✅ |
| PostgreSQL | psycopg2 | ✅ |
如果你告诉我:
我可以给你更精确的配置示例。