标签: pgdb

如何使用pgdb.executemany?

我正在尝试insert使用pgdb模块从Python 执行语句到PostgreSQL.

我看到文档说:

    cursor.executemany(query, list of params)
    # Execute a query many times, binding each param dictionary
    # from the list.
Run Code Online (Sandbox Code Playgroud)

所以我正在尝试这样的事情:

>>> insert = "insert into foo (name, number) values (?,?);"
>>> params = [{ 'name': 'John', 'number': 123 }, { 'name': 'Jack', 'number': 234 }]
>>> cursor.executemany(insert, params)
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误,指着?.这种参数化查询的正确语法是什么?另外,如果这是在文档中,我在哪里可以找到它?

python database postgresql parameters pgdb

6
推荐指数
1
解决办法
1446
查看次数

pg.InternalError:SSL SYSCALL 错误:检测到 EOF

我在 python 中有一个使用多处理和访问数据库的代码。它大部分时间都能正常工作,但有时会产生错误。该错误最初是

File "/usr/lib/python2.7/multiprocessing/pool.py", line 528, in get
    raise self._value
pg.OperationalError: can't rollback
Run Code Online (Sandbox Code Playgroud)

或者

File "/usr/lib/python2.7/multiprocessing/pool.py", line 528, in get
    raise self._value 
pg.InternalError: SSL SYSCALL error: EOF detected
Run Code Online (Sandbox Code Playgroud)

我用来访问数据库的代码是

def getRecords(db,query):
    cur=db.cursor()
    cur.execute(query)
    types=getTypes(cur.description)
    columns=getColumns(cur.description)
    rows=cur.fetchall()
    cur.close()
    try:
        db.commit()
    except:
        db.rollback()
Run Code Online (Sandbox Code Playgroud)

多处理是通过以下方式完成的:

po = multiprocessing.Pool()
for an_element in a_list:
    for an_object in a_list_of_objects:
        results.append(po.apply_async(the_multiprocessed_function, (an_element, an_object)))               
po.close()
po.join()
for r in results:
    some_function_of(r.get())
Run Code Online (Sandbox Code Playgroud)

我想知道我是否在跨进程共享连接,但是对于每个多处理函数,我创建了新连接 (conn = pgdb.connect(...)) 并关闭它 (conn.close())。

然后,我想知道它是否与我提供给我的多处理函数的参数有关,特别是因为它们是我自己定义的类实例,但是为什么这会在 pg 中产生错误?

对不起,如果我的问题不是很清楚,但我不知道在哪里寻找错误。多处理适用于较小的实例和其他表,并且已经过测试。但是当更改查询中的一个表并运行代码以解决更大的问题时,我在某处达到了一些限制。

python postgresql asynchronous multiprocessing pgdb

4
推荐指数
1
解决办法
1万
查看次数

安装pgdb:pg_config工具不可用

所以这是我的目标:获取导入pgdb的.py文件,以便运行.

为此,据我所知,我需要PygreSql.

我安装了postgresql 9.4.4和python 2.7.9(带有源代码的Postgresql和带有网站正常下载的python).我找到了文件PyGreSQL.tar(版本4.1.1),并python setup.py build在提取的tar文件的目录中运行了该命令.我收到了消息Exception: pg_config tool is not available..我该怎么做才能解决这个问题?

提前致谢!

python postgresql pygresql pgdb

3
推荐指数
2
解决办法
4451
查看次数