标签: psycopg2

SQLAlchemy还是psycopg2?

我正在写一个快速而又脏的脚本,需要与数据库(PG)进行交互.

该脚本是解决现有问题的务实,战术解决方案.但是,我设想脚本会随着时间的推移而演变成一个更"精致"的系统.鉴于它目前正在快速组合(即我没有时间倾注大量的文档),我很想通过psycopg走快速而肮脏的路线.

psycopg2的优点(正如我目前所理解的)是:

  1. 用C语言编写,比sqlAlchemy(用Python编写)快吗?
  2. DBAPI上没有抽象层,因为只使用一个db和一个db(暗示 - >快)
  3. (现在),我不需要ORM,所以我可以直接执行我的SQL语句而无需学习新的ORM语法(即轻量级)

缺点:

  1. 我知道我会想要进一步的ORM
  2. psycopg2是("过时"?) - 不知道它会保留多长时间

我对SqlAlchemy(慢/解释,臃肿,陡峭的学习曲线)的看法是否真实 - 无论如何,我可以使用sqlAlchemy以"粗略和准备"的方式使用psycopg - 即:

  1. 直接执行SQL语句,而不必乱用ORM层等.

这样做的任何例子都可以吗?

python postgresql sqlalchemy psycopg2

29
推荐指数
2
解决办法
2万
查看次数

Python psycopg2没有插入postgresql表

我正在使用以下内容尝试将记录插入到postgresql数据库表中,但它无法正常工作.我没有收到任何错误,但表中没有记录.我需要提交还是其他什么?我正在使用随Bitnami djangostack安装一起安装的postgresql数据库.

import psycopg2

try:
    conn = psycopg2.connect("dbname='djangostack' user='bitnami' host='localhost' password='password'")
except:
    print "Cannot connect to db"

cur = conn.cursor()

try:
    cur.execute("""insert into cnet values ('r', 's', 'e', 'c', 'w', 's', 'i', 'd', 't')""")
except:
    print "Cannot insert"
Run Code Online (Sandbox Code Playgroud)

python postgresql psycopg2 insert

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

游标如何在Python的DB-API中工作?

我一直在使用python和RDBMS'(MySQL和PostgreSQL),我注意到我真的不明白如何使用游标.

通常,他的脚本通过客户端DB-API(如psycopg2或MySQLdb)连接到数据库:

connection = psycopg2.connect(host='otherhost', etc)
Run Code Online (Sandbox Code Playgroud)

然后创建一个游标:

cursor = connection.cursor()
Run Code Online (Sandbox Code Playgroud)

然后可以发出查询和命令:

cursor.execute("SELECT * FROM etc")
Run Code Online (Sandbox Code Playgroud)

现在查询的结果在哪里,我想知道?它在服务器上?还是我的客户端上的一点点,我的服务器上的一点点?然后,如果我们需要访问某些结果,我们会获取它们:

rows = cursor.fetchone() 
Run Code Online (Sandbox Code Playgroud)

要么

rows = cursor.fetchmany()
Run Code Online (Sandbox Code Playgroud)

现在让我们说,我不检索所有行,并决定执行另一个查询,以前的结果会发生什么?是他们的开销.

此外,我应该为每种形式的命令创建一个游标,并以某种方式不断地将它重用于那些相同的命令; 我头psycopg2可以某种方式优化多次执行但具有不同值的命令,它是如何值得的?

谢谢

python performance rdbms cursors psycopg2

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

我应该在Django的DATABASE_ENGINE中使用哪个Postgres值?

这是我第一次使用PostgreSQL 8.4.2和Django(过去我一直使用MySQL或sqlite3).我应该使用哪个值DATABASE_ENGINEsettings.py,postgresql_psycopg2还是postgresql?他们如何彼此不同?

django postgresql psycopg2

28
推荐指数
1
解决办法
3547
查看次数

Amazon Elastic Beanstalk上的Psycopg2

我正在尝试上传我的项目(在python中),它使用Psycopg2进行Amazon Elastic Beanstalk.我正在使用包含我的项目和requirements.txt文件的zip文件.

但是我收到了这个错误:

下载/解压缩psycopg2> = 2.4.6(来自-r /opt/python/ondeck/app/requirements.txt(第3行))运行setup.py egg_info for package psycopg2错误:找不到pg_config可执行文件.

Please add the directory containing pg_config to the PATH
or specify the full executable path with the option:

    python setup.py build_ext --pg-config /path/to/pg_config build ...

or with the pg_config option in 'setup.cfg'.
Complete output from command python setup.py egg_info:
running egg_info
Run Code Online (Sandbox Code Playgroud)

我如何在亚马逊上解决这个问题?

python psycopg2 amazon-web-services amazon-elastic-beanstalk

28
推荐指数
2
解决办法
6801
查看次数

如何显式引用字符串值(Python DB API/Psycopg2)

出于某些原因,我想明确引用字符串值(成为构造的SQL查询的一部分),而不是等待cursor.execute方法对其第二个参数的内容执行的隐式引用.

通过"隐含引用"我的意思是:

value = "Unsafe string"
query = "SELECT * FROM some_table WHERE some_char_field = %s;"
cursor.execute( query, (value,) ) # value will be correctly quoted
Run Code Online (Sandbox Code Playgroud)

我更喜欢这样的东西:

value = "Unsafe string"
query = "SELECT * FROM some_table WHERE some_char_field = %s;" % \
    READY_TO_USE_QUOTING_FUNCTION(value)
cursor.execute( query ) # value will be correctly quoted, too
Run Code Online (Sandbox Code Playgroud)

这是READY_TO_USE_QUOTING_FUNCTIONPython DB API规范所期望的低级别(我在PEP 249文档中找不到这样的功能).如果没有,也许Psycopg2提供这样的功能?如果没有,也许Django提供这样的功能?我不想自己写这样的功能......

python sql django psycopg2

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

使用带有psycopg2的二进制COPY表FROM

我有数千万行从多维数组文件传输到PostgreSQL数据库.我的工具是Python和psycopg2.批量处理数据的最有效方法是使用copy_from.但是,我的数据大多是32位浮点数(real或float4),所以我宁愿不转换为real→text→real.这是一个示例数据库DDL:

CREATE TABLE num_data
(
  id serial PRIMARY KEY NOT NULL,
  node integer NOT NULL,
  ts smallint NOT NULL,
  val1 real,
  val2 double precision
);
Run Code Online (Sandbox Code Playgroud)

这是我使用字符串(文本)使用Python的地方:

# Just one row of data
num_row = [23253, 342, -15.336734, 2494627.949375]

import psycopg2
# Python3:
from io import StringIO
# Python2, use: from cStringIO import StringIO

conn = psycopg2.connect("dbname=mydb user=postgres")
curs = conn.cursor()

# Convert floating point numbers to text, write to COPY input
cpy = StringIO()
cpy.write('\t'.join([repr(x) for x in …
Run Code Online (Sandbox Code Playgroud)

python postgresql bulkinsert psycopg2 binary-data

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

Postgres SSL SYSCALL错误:使用python和psycopg检测到EOF

使用psycopg2包与python 2.7我一直得到标题错误:psycopg2.DatabaseError:SSL SYSCALL错误:检测到EOF

它只发生在WHERE column LIKE ''%X%''我的pgrouting查询中添加一个子句时.一个例子:

SELECT id1 as node, cost FROM PGR_Driving_Distance(
  'SELECT id, source, target, cost 
     FROM edge_table
     WHERE cost IS NOT NULL and column LIKE ''%x%'' ',
  1, 10, false, false)
Run Code Online (Sandbox Code Playgroud)

互联网上的线程表明它是直观的SSL问题,但每当我注释掉模式匹配方面的事情时,查询和数据库的连接工作正常.

这是在运行Xubuntu 13.10的本地数据库上.

进一步调查后:看起来这可能是由于pgrouting扩展程序导致数据库崩溃,因为它是一个错误的查询,并且它们不是具有此模式的链接.

会很快发布一个答案......

python postgresql ssl psycopg2 pgrouting

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

sqlalchemy.exc.ArgumentError:无法加载插件:sqlalchemy.dialects:driver

我正在尝试运行alembic迁移,当我运行时

alembic revision --autogenerate -m "Added initial tables"
Run Code Online (Sandbox Code Playgroud)

它说不出来

sqlalchemy.exc.ArgumentError: Can't load plugin: sqlalchemy.dialects:driver
Run Code Online (Sandbox Code Playgroud)

数据库网址是

postgresql+psycopg2://dev:passwd@localhost/db
Run Code Online (Sandbox Code Playgroud)

我甚至psycopg2安装在我的virtualenv中

$yolk -l
Flask-Login     - 0.1.3        - active
Flask-SQLAlchemy - 0.16         - active
Flask           - 0.9          - active
Jinja2          - 2.6          - active
Mako            - 0.7.3        - active
MarkupSafe      - 0.15         - active
Python          - 2.7.2        - active development (/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload)
SQLAlchemy      - 0.8.0        - active
Werkzeug        - 0.8.3        - active
alembic         - 0.4.2        - active
antiorm         - 1.1.1        - active …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy psycopg2 alembic

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

"psycopg2构建轮失败" - 使用virtualenv和pip的MacOSX

我第一次尝试与其他几个网站建立网站,并且在尝试使用Django/Python/VirtualEnv时遇到了一个奇怪的错误.我已经为其他操作系统找到了解决这个问题的方法,比如Ubuntu,但是找不到适合Mac的好解决方案.

这是正在运行的相关代码:

virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

运行该块后,我收到以下错误:

Asse田


django-toolbelt的构建轮失败为psycopg2运行setup.py bdist_wheel

...

Asse田


psycopg2构建轮失败无法构建django-toolbelt psycopg2

我相信我已经安装了"django-toolbelt"和"psycopg2",所以我不确定它为什么会失败.

我能想到的唯一区别是我没有使用该命令

sudo apt-get install libpq-dev
Run Code Online (Sandbox Code Playgroud)

正如Ubuntu用法的指示,因为我相信用brew安装postgresql会处理标题.

感谢您的帮助或见解!

python django postgresql psycopg2 virtualenv

26
推荐指数
11
解决办法
3万
查看次数