Django项目如何读取同一Postgres库中Go项目创建的Clients表数据
你可以通过在Django中定义非托管模型的方式,用和查询Cook表完全一致的ORM语法读取Go项目创建的Clients表数据,操作步骤如下:
1. 定义Clients表对应的非托管模型
在你Django项目任意app的models.py文件中添加如下代码:
from django.db import models class Client(models.Model): # 这里的字段需要和PostgreSQL中实际Clients表的字段名、类型完全匹配 # 示例字段请根据你的实际表结构调整 id = models.BigAutoField(primary_key=True) full_name = models.CharField(max_length=255) contact_phone = models.CharField(max_length=30, null=True) register_time = models.DateTimeField(auto_now_add=True) class Meta: managed = False # 核心配置:告诉Django不要维护这个表的结构变更 db_table = 'clients' # 填写实际的表名,PostgreSQL区分大小写,若表名是大写开头请填'Clients'
如果你不清楚表的字段配置,可以直接用Django自带的inspectdb命令自动生成模型代码:
python manage.py inspectdb clients > client_model.txt
命令执行后打开生成的client_model.txt,把生成的模型代码复制到models.py里即可,自动生成的代码已经默认配置了managed=False和正确的表名。
2. 用ORM查询数据
配置完成后你就可以用和查询Cook表完全一样的语法操作Clients表了,示例如下:
# 查询所有客户端数据 all_clients = Client.objects.all() # 条件查询 target_client = Client.objects.filter(id=1).first()
如果你之前查询Cook表用的是原生SQL的方式,也可以直接执行SQL读取Clients表:
from django.db import connection def get_all_clients(): with connection.cursor() as cursor: cursor.execute("SELECT * FROM clients") # 把查询结果转为字典格式 col_names = [item[0] for item in cursor.description] return [dict(zip(col_names, row)) for row in cursor.fetchall()]
内容的提问来源于stack exchange,提问作者Fuad Suleymanov
相关产品推荐
相关产品推荐

