以下是 Python 调用其他数据库的代码示例:
# 安装库: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()
# 安装库: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()
# 安装库: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")
# 安装库: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()
# 安装库: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', {}))
# 安装库: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()
环境依赖:部分数据库(如 Oracle、Cassandra)需要额外安装客户端或运行时环境。
安全配置:生产环境务必使用加密连接和权限控制(如 DynamoDB 的 IAM 策略)。
性能优化:高频操作建议使用连接池(如 cassandra.cluster.Cluster
的 max_connections
参数)。
数据模型:NoSQL 数据库(如 DynamoDB、Cassandra)需根据查询模式设计主键和索引。