使用psycopg2构建无连接查询
我有几次需要在外面收集数据的情况。这种情况下,我并不总是能访问我的postgres数据库。
为了保持数据同步,如果我能在离线时使用psycopg2的功能来生成一些查询,然后等我能连接到数据库时再处理这些查询,那就太好了。
我现在遇到的一个问题是,psycopg2的游标需要一个连接才能创建。
我的问题是:
有没有办法在没有活动连接对象的情况下使用游标做一些像mogrify这样的操作?或者用一个没有连接到数据库的连接对象?我想把mogrify的结果暂时写到文件里,以便以后处理。
2 个回答
0
看起来把要插入的数据存储在另一个结构中会更简单、更灵活。比如说,可以用一个csv文件来存储这些数据。这样,当你连接的时候,就可以遍历这个表格,但如果需要的话,你也可以很方便地对这个csv文件做其他操作。
18
这种方法比较脆弱,因为连接会用来检测一些用于转义的参数(比如编码、符合标准的字符串等)。
你可以手动处理数据,调用 psycopg2.extensions.adapt(x).getquoted()
来处理你的参数,然后用普通的 Python %
操作符把它们合并到查询中。
不过,目前发布的 psycopg 版本(到 2.3.2)在处理 None
转换成 NULL
时可能会出问题。你可以手动转换这些值,或者为 None 注册一个适配器;你可以在 这个提交 中看到具体的做法。