pythonDjango将数据导入Postgres

2024-10-06 09:06:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道如何将新的Django/postgo数据插入到excel/txt文件中。我能够成功地连接到数据库并创建一个表,但你们能帮助我如何使用Django模型导入和导出数据吗

编辑:

csv_filepathname= "C:/Users/Desktop/MF.csv"
djang_proj_folder= "C:/Users/"

import sys,os
sys.path.append(djang_proj_folder)
os.environ['DJANGO_SETTINGS_MODULE'] ='cartel_app.settings'

from cartel_app.models import mf


import csv
datareader = csv.reader(open(csv_filepathname), delimiter='|')

for row in datareader:
    record_type = row[0]
    unique_system_identifier = row[1]
    uls_file_number=row[2]
    ebf_number=row[3]
    call_sign=row[4]
    partition_area_idnumeric=row[5]
    lower_frequency=row[6]
    upper_frequency=row[7]
    def_und_indicator=row[8]
    defined_partition_area=row[9]

成功地将数据加载到表中,但只能加载2行,它有1000多行,我哪里做错了??请提出建议


Tags: csv数据djangoimportappossysfolder
2条回答

如果你发布更多的细节会很有帮助,但我认为这不会改变你采取的方法。例如,您必须从csv(use native csv reader)/excel(use openpyxl)导入图书数据,其中包含诸如title、isbn、page_count等字段

首先,我的建议是依赖django的ORM并创建带有相应字段的模型(Book)。然后只需读取源文件并执行主作业-插入(为了提高效率,我建议使用bulk_create):

entries = []
for line in source:
    entries.append(Book(title=line['title'], ... etc
Book.objects.bulk_create(entries)

另外,对于基于模型的转储数据,请使用django的built-in capability

^{pr2}$

瞧,你好。希望有帮助

这在很大程度上取决于您的模型,以及在保存之前如何处理csv。在

例如,我将使用此模型:

# students/models.py
from django.db import models

class Student(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    grade = models.IntegerField()

    def __str__(self):
        return f"{self.first_name} {self.last_name} (grade={self.grade})"

要导入csv,我们可以使用^{} module from the stdlib。在

^{pr2}$

现在,我们可以通过导入正确格式的csv进行测试:

# There are no products in the database to start
>>> Student.objects.count()
0

# Here's a csv with some example data:
>>> print(open("students.csv").read())
first_name,last_name,grade
John,Doe,5
Jane,Doe,8

>>> from students.data_import import load_csv_file
>>> load_csv_file("students.csv")
>>> Student.objects.count()
2
>>> Student.objects.values()
[
    {"first_name": "John", "last_name": "Doe", "grade": 5},
    {"first_name": "Jane", "last_name": "Doe", "grade": 8}
]

相关问题 更多 >