Python连接数据库汇总(二)

以下是 Python 调用其他数据库的代码示例:


1. Microsoft SQL Server

# 安装库:pip install pyodbc
import pyodbc

# 连接数据库
conn = pyodbc.connect(
    'DRIVER={ODBC Driver 17 for SQL Server};'
    'SERVER=localhost;'
    'DATABASE=test_db;'
    'UID=sa;'
    'PWD=your_password;'
)
cursor = conn.cursor()

# 创建表
cursor.execute('''
    IF NOT EXISTS (SELECT * FROM sysobjects WHERE name='users')
    CREATE TABLE users (id INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(255))
''')
conn.commit()

# 插入数据
cursor.execute("INSERT INTO users (name) VALUES ('Frank')")
conn.commit()

# 查询数据
cursor.execute("SELECT * FROM users")
for row in cursor.fetchall():
    print(row)

# 关闭连接
cursor.close()
conn.close()


2. Cassandra (NoSQL)

# 安装库:pip install cassandra-driver
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

# 连接集群(无密码示例)
cluster = Cluster(['localhost'])
session = cluster.connect()

# 创建键空间和表
session.execute("""
    CREATE KEYSPACE IF NOT EXISTS test_ks 
    WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1}
""")
session.set_keyspace('test_ks')
session.execute("""
    CREATE TABLE IF NOT EXISTS users (
        id UUID PRIMARY KEY,
        name TEXT
    )
""")

# 插入数据
from cassandra.util import uuid
user_id = uuid.uuid1()
session.execute("INSERT INTO users (id, name) VALUES (%s, %s)", (user_id, "Grace"))

# 查询数据
rows = session.execute("SELECT * FROM users")
for row in rows:
    print(row.id, row.name)

# 关闭连接
cluster.shutdown()


3. Elasticsearch

# 安装库:pip install elasticsearch
from elasticsearch import Elasticsearch

# 连接本地节点
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

# 创建索引(如果不存在)并插入文档
if not es.indices.exists(index="users"):
    es.indices.create(index="users")

doc = {"name": "Henry", "age": 28}
es.index(index="users", id=1, document=doc)

# 查询数据
result = es.search(index="users", query={"match_all": {}})
for hit in result['hits']['hits']:
    print(hit['_source'])

# 删除索引(可选)
# es.indices.delete(index="users")


4. Oracle Database

# 安装库:pip install cx_Oracle
import cx_Oracle

# 连接数据库(需安装 Oracle Instant Client)
dsn = cx_Oracle.makedsn("localhost", 1521, service_name="ORCL")
conn = cx_Oracle.connect(user="admin", password="your_password", dsn=dsn)
cursor = conn.cursor()

# 创建表
cursor.execute("""
    CREATE TABLE users (
        id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY PRIMARY KEY,
        name VARCHAR2(50)
""")

# 插入数据
cursor.execute("INSERT INTO users (name) VALUES ('Ivy')")
conn.commit()

# 查询数据
cursor.execute("SELECT * FROM users")
for row in cursor:
    print(row)

# 关闭连接
cursor.close()
conn.close()


5. Amazon DynamoDB (NoSQL)

# 安装库:pip install boto3
import boto3

# 连接 DynamoDB(本地开发可使用 LocalStack)
dynamodb = boto3.resource(
    'dynamodb',
    region_name='us-west-2',
    aws_access_key_id='dummy',
    aws_secret_access_key='dummy',
    endpoint_url='http://localhost:8000'  # 本地端点
)

# 创建表(如果不存在)
table = dynamodb.create_table(
    TableName='users',
    KeySchema=[{'AttributeName': 'user_id', 'KeyType': 'HASH'}],
    AttributeDefinitions=[{'AttributeName': 'user_id', 'AttributeType': 'S'}],
    ProvisionedThroughput={'ReadCapacityUnits': 1, 'WriteCapacityUnits': 1}
)
table.wait_until_exists()

# 插入数据
table.put_item(Item={'user_id': '1', 'name': 'Jack'})

# 查询数据
response = table.get_item(Key={'user_id': '1'})
print(response.get('Item', {}))


6. InfluxDB (时序数据库)

# 安装库:pip install influxdb-client
from influxdb_client import InfluxDBClient, Point
from influxdb_client.client.write_api import SYNCHRONOUS

# 连接数据库
client = InfluxDBClient(
    url="http://localhost:8086",
    token="your_token",
    org="your_org"
)
write_api = client.write_api(write_options=SYNCHRONOUS)

# 写入数据
point = Point("temperature").tag("location", "room1").field("value", 25.5)
write_api.write(bucket="test_bucket", record=point)

# 查询数据
query_api = client.query_api()
result = query_api.query('from(bucket:"test_bucket") |> range(start:-1h)')
for table in result:
    for record in table.records:
        print(record.values)

# 关闭连接
client.close()


注意事项:

  1. 环境依赖:部分数据库(如 Oracle、Cassandra)需要额外安装客户端或运行时环境。

  2. 安全配置:生产环境务必使用加密连接和权限控制(如 DynamoDB 的 IAM 策略)。

  3. 性能优化:高频操作建议使用连接池(如 cassandra.cluster.Clustermax_connections 参数)。

  4. 数据模型:NoSQL 数据库(如 DynamoDB、Cassandra)需根据查询模式设计主键和索引。

你可能感兴趣的:(python,python,数据库,开发语言)