我有以下表格(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'字段的Owners,它映射到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 + ', ' + ???? + ');'
答案 0 :(得分:1)
您没有说明为什么需要在原始SQL中执行此操作。我还不明白为什么在调用PK字段structidx
时在SQL中使用person
和id
- 并且person
的基础列名是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注入攻击。