我从Python开始,目前正在编写一个脚本,从API获取数据,对其进行处理并保存在Postgresql数据库中。 我使用的是Django和Postgresql,它们都是dockerized。在
代码从API中获取数据并显示给我看,所以这部分没问题。现在的问题是如何将其保存在数据库中。在
我曾经在PHP中使用Symfony来实现这一点,它大致如下:
PHP/Symfony
/*Movie*/
$movie_imdb_id = 'NULL';
$movie_status = $value->isPlaying;
$movie = new Movie();
$movie->setImdbId($movie_imdb_id);
$movie->setStatus($movie_status);
$entityManager->persist($movie);
$entityManager->flush();
我想做同样的事情,但是用Python。 这是我目前为止的剧本。在
Python/Django
^{pr2}$我的主要问题是如何插入在Postgres表中得到的数据,因为它们是object。在
谢谢你的帮助!在
编辑1
所以,在阅读了@Chris发布的指南之后,我重新编写了代码,使之更具可读性
Python 2
import json
import urllib3
import psycopg2
conn = psycopg2.connect(database="pp-db", user="root", password="root", host="db", port="5432")
cur = conn.cursor()
http = urllib3.PoolManager()
url = "https://api-content.ingresso.com/v0/theaters"
try:
response = http.request('GET', url)
data = json.loads(response.data.decode('utf-8'))
for i in data:
cityName = None
uf = None
cityName = i['cityName']
uf = i['uf']
cur.execute("INSERT INTO city VALUES(%s, %s)", (cityName, uf))
conn.commit()
cur.close()
except IOError as io:
print("ERROR!")
好的,到目前为止,还不错,但是当我执行脚本时,它会返回一个错误:
psycopg2.DataError: invalid input syntax for integer: "Rio de Janeiro"
我想这可能是因为我忘了传递id
,因为这个表有(id,cityName,uf)。
我必须手动在表中插入id?在
我创建了一个索引作为Id键。它工作得很好。在
所以,经过一些编码,我终于成功了。这是我做的代码。 尽管如此,我很确定有更好的方法来做到这一点,但它仍然有效。在
PYTHON-工作
相关问题 更多 >
编程相关推荐