import ollama
# import clickhouse_connect
# 1. 连接ClickHouse
# client = clickhouse_connect.get_client(
# host='localhost',
# port=8123,
# username='default',
# password=''
# )
# 2. 准备数据库schema信息(关键步骤)
database_schema = """
表结构:
- users表:id Int64, name String, email String, created_date Date
- orders表:order_id Int64, user_id Int64, amount Float64, order_date Date
- products表:product_id Int64, product_name String, price Float64
"""
def ask_deepseek(question):
# 构建包含schema的提示词
prompt = f"""
你是一个SQL专家。基于以下数据库结构:
{database_schema}
请将这个问题转换为ClickHouse SQL查询:
问题:{question}
只返回SQL语句,不要其他解释。
"""
# 3. 调用本地DeepSeek模型
response = ollama.chat(model='deepseek-r1:8b', messages=[
{'role': 'user', 'content': prompt}
])
return response['message']['content']
# 使用示例
question = "查询最近一周的订单总金额"
sql_query = ask_deepseek(question)
print(f"生成的SQL: {sql_query}")
# 4. 执行SQL查询
# if sql_query.strip().startswith('SELECT'):
# result = client.query(sql_query)
# print("查询结果:", result.result_rows)