![](/img/trans.png)
[英]Iterate through JSON data, create dict/list and then insert into Postgresql database using psycopg2?
[英]Trying to add data to Postgresql database using psycopg2
我能够创建脚本以将数据直接添加到 Postgresql 表中。 唯一的问题是ManyToManyFields。 虽然我能够添加数据,但我无法链接到多对多。
这是我的models.py
class Category(MPTTModel):
name = models.CharField(max_length=150, unique=True)
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
class MPTTMeta:
order_insertion_by = ['name']
def __str__(self):
return self.name
from django.urls import reverse
class Listing(models.Model):
name = models.CharField('Business Name', max_length=250)
address = models.CharField('Address', max_length=300)
phone_number = models.CharField('Phone Number', max_length=20)
web = models.URLField('Website')
category = models.ManyToManyField(Category)
main_image = models.CharField('Image Link', max_length=500)
LISTING_STATUS = (
('a', 'Active'),
('e', 'Expired'),
('i', 'Inactive'),
('c', 'Claimed'),
)
status = models.CharField(
max_length=1,
choices=LISTING_STATUS,
blank=True,
default='a',
help_text='Listing Status',
)
def get_cats(self):
return ", ".join([str(p) for p in self.category.all()])
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('listing-detail', args=[str(self.id)])
在另一个文件中,我创建了另一个代码来将信息添加到数据库中:
def insert(name, address, phone_number, web, status, main_image, ):
conn = psycopg2.connect("host=localhost dbname=augustalife user=postgres")
cur = conn.cursor()
cur.execute("INSERT INTO listings_listing (name, address, phone_number, web, status, main_image) VALUES (%s,%s,%s,%s,%s,%s);", (name, address, phone_number, web, status, main_image))
conn.commit()
conn.close()
我知道如果我使用Django shell
,我可以手动链接项目。 但是,有没有办法添加listing
并将其与正确的category
联系起来?
提前致谢。
您应该改用 Django 的 ORM :
def insert(name, address, phone_number, web, status, main_image):
Listing.objects.create(
name=name,
address=address,
phone_number=phone_number,
website=web,
status=status,
main_image=main_image,
)
我不确定您如何确定哪些类别属于给定列表,但链接类别和列表的过程很简单:
listing = Listing.objects.create(...)
category = Category.objects.first()
listing.categories.add(category)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.