如何从Django应用程序连接databricks delta表

zour9fqk  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(111)

我是Django框架的新手,在我的项目中,我有一个要求,我必须连接到databricks增量表并对其执行CRUD操作。如果我们可以连接它。我请求你列出步骤。谢谢。

ilmyapht

ilmyapht1#

您尝试使用databricks-sql-connector是正确的,但您对www.example.com中的数据库详细信息感到困惑settings.py,在那里您无法添加databricks集群数据库。根据文档,以下是支持
可以在Django中使用的数据库。(https://docs.djangoproject.com/en/4.1/ref/databases/

  1. PostgreSQL
  2. MariaDB
  3. MySQL
    1.甲骨文
  4. SQLite
    这里的想法是使用DataBricks-SQL-Connector从增量表中获取数据并处理这些数据
    根据你的申请。
    下面是要遵循的步骤,

**第一步:**在您的Django python环境中安装python包

https://pypi.org/project/databricks-sql-connector/
pip安装数据库ricks-sql连接器

**第二步:**www.example.com中的配置setting.py,默认数据库保持不变。

步骤3:运行python迁移。

python .\manage.py makemigrations

步骤4:在databricks集群中创建增量表

%sql
CREATE TABLE products (
product_name string,
price int)
USING DELTA;

上面是创建表的代码。在这里你可以看到列名类似于models.py中创建的模型字段。

**第五步:**插入数据到表中

insert into products values ('TV',60000)
insert into products values (Iphone,50000)
insert into products values (Macbook,150000)

第六步:

从databricks集群中获取主机、http_path和访问令牌。
您可以在集群〉配置〉高级选项〉JDBC/ODBC下找到您的主机和http路径

对于访问令牌,您需要创建一个。转到数据块菜单右侧的下拉菜单〉用户设置〉生成新令牌。

第七步:

知道创建一个视图来获取上面的数据。这里是一个读操作的例子

from django.shortcuts import render
from databricks import sql
def get(request):
connection = sql.connect(
server_hostname= your_host,
http_path= your_http_path,
access_token= your_access_token
cursor = connection.cursor()
cursor.execute('SELECT * FROM `products`')
result = cursor.fetchall()
tmpB=[]
for row in result:
dictRow = row.asDict()
tmpB.append(dictRow)
cursor.close()
connection.close()
return render(request,'details.html',{product:tmpB})

获取数据后,您可以在模板中渲染它,或者您可以创建Model对象。从 * 步骤8* 显示如何将检索到的数据存储在Django默认数据库sqlite中。
代码在details.html

{% block content %}
<h1>Book List</h1>
<ul>
{% for prd in product %}
<li>{{ prd.product_name }} : Price = {{ prd.price}}</a></li>
{% endfor %}
</ul>
{% endblock %}

结果:以下是页面中显示的结果。

第八步:

这里的步骤存储检索到的数据在默认数据库创建模型在model.py
www.example.com中的代码models.py

from django.db import models
# Create your models here.
class Product(models.Model):
product_name = models.CharField(max_length=200)
price = models.IntegerField(default=0)

**第九步:**再次知道运行python迁移命令

python .\manage.py makemigrations

这将创建一个名为www.example.com的迁移文件0001.py,如图所示。

然后运行sql migrate命令,提供如下名称,此命令在默认数据库中创建所需的表。

python .\manage.py sqlmigrate myapp 0001

**第十步:**知道获取数据并使用它创建模型对象。代码在views.py

from django.shortcuts import render
from .models import Product
from databricks import sql
def get(request):
connection = sql.connect(
server_hostname=host,
http_path=http_path,
access_token=access_token)
cursor = connection.cursor()
cursor.execute('SELECT * FROM `products`')
result = cursor.fetchall()
for row in result:
dictRow = row.asDict()
dataTosave =  Product(product_name = dictRow['product_name'],price = dictRow['price'])
dataTosave.save()
cursor.close()
connection.close()
productDT = Product.objects.all()
return render(request,'details.html',{product: productDT })

但请确保在创建对象时在增量表和模型字段中使用适当的列名。
同样,你也可以执行CRUD操作。下面的文档将帮助你。
https://learn.microsoft.com/en-us/azure/databricks/dev-tools/python-sql-connector

相关问题