我有类似以下的表格(Django模型定义,并带有一个postgres数据库):
class Person(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=300) class Owner(models.Model): id = models.IntegerField() person = models.ForeignKey(Person)
我使用Python脚本从CSV文件设置数据库。原始文件列出了具有整数id和整数“ person”字段的“所有者”,该字段映射到Person.id中的整数。
但是,鉴于Owner中的“ person”列希望使用Person对象,我该如何编写原始SQL字符串以将值插入Owner?
owner_id = 665 person_id = 330 sql_string = 'INSERT INTO owner (id, person) VALUES (' + sql_string += owner_id + ', ' + ???? + ');'
您没有说为什么需要在原始SQL中执行此操作。而且我也想不明白,为什么你正在使用structidx,并person在SQL当你的PK场被称为id-以及相关的列名person是person_id。因此,您的代码应为:
structidx
person
id
person_id
sql_string = "INSERT INTO owner (`id`, `person_id`) VALUES (%s, %s)" cursor = connection.cursor() cursor.execute(sql_string, (665, 330))
请注意,像我在此处使用Python db-api的引号功能始终是避免SQL注入攻击的好习惯。