我正在尝试使用psycopg2
将数据从python shell插入到postgresql数据库中。我试图将以下数据库迁移到本地postgreSQL文件:http://www3.inegi.org.mx/sistemas/mapa/denue/default.aspx。工作流程的简化示例如下所示:
import psycopg2
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
DB_CONN_INEGI = 'host=localhost user=postgres password=password port=5432 dbname=inegi'
conn = psycopg2.connect(DB_CONN_INEGI)
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cursor = conn.cursor()
然后我执行此命令将一些值插入表中:
cursor.execute("INSERT INTO denoue VALUES %s;" % tmp)
执行得很好,但是当我用:
检查记录计数时cursor.execute('SELECT COUNT(*) FROM denoue;')
这不会返回任何内容(None
)。我可以一遍又一遍地运行上面的调用,但结果总是一样的 - 似乎没有数据添加到表中。
我错过了什么明显的东西吗?抱歉没有一个快速工作的例子 - 我可以尝试快速模拟一个在本地数据库上运行的,如果这在这里有用的话。
tmp
看起来像这样:
"(40740, 'ZONA MILITAR', 'SECRETAR\\xc3\\x8dA DE LA DEFENSA NACIONAL', 931410, 'Impartici\\xc3\\xb3n de justicia y mantenimiento de la seguridad y el orden p\\xc3\\xbablico', '11 a 30 personas', 'CALLE', 'R\\xc3\\x8dO LERMA', 'CALLE', 'R\\xc3\\x8dO SENA', 'CALLE', 'R\\xc3\\x8dO \\xc3\\x89UFRATES', 'CALLE', 'R\\xc3\\x8dO LERMA', 100.0, 'null', 'null', 'null', 'null', 'null', 'FRACCIONAMIENTO', 'COLINAS DEL R\\xc3\\x8dO', 'null', 'null', 'null', 20010.0, 1, 'AGUASCALIENTES', 1, 'AGUASCALIENTES', 1, 'Aguascalientes', '2013', 25, 'null', 'null', 'null', 'Fijo', 21.89341096, -102.32335734, 'DICIEMBRE 2014')"
答案 0 :(得分:2)
cursor.execute('SELECT COUNT(*) FROM denoue;')
这实际上会执行一个查询并返回None
。要获取查询结果,您应该使用fetchone()
方法:
results_count = cursor.fetchone()[0]