Postgres NOTIFY仅支持字符串文字(无二进制数据)。我设法通过以下方式将它与腌制对象一起使用:
message = cPickle.dumps(objectFoo)
cursor = connection.cursor() # this is psycopg2 connection
cursor.execute("NOTIFY channelFoo, %s", [message])
Run Code Online (Sandbox Code Playgroud)
但是,如果我将一些棘手的字节放入编码对象(例如 '\x80' 字符串)。从execute()以下位置返回错误:
psycopg2.DataError:编码“UTF8”的无效字节序列:0x80
有没有解决的办法?一种无论对象保存什么数据都可以可靠地将腌制对象序列化为 Postgres 字符串的方法?
我正在尝试安装 psycopg2,以便我可以在 Python 和 Django 中使用 PostgreSQL。在尝试安装它的最后几个小时内,我遇到了多个错误,似乎无法解决最新的错误。当我运行时:
setup.py install
Run Code Online (Sandbox Code Playgroud)
在命令控制台中的 psycopg2 上,它尝试安装它,但在尝试link.exe在 Visual Studio 8 文件夹中执行时出现错误。
考虑到当我从 Windows 资源管理器和命令控制台启动该可执行文件时,这对我来说没有意义。我什至为它制作了一个环境变量。但是,它不断给出:
"error: command C:\Program Files(x86)\Microsoft Visual Studio 9.0\VC\BIN\link.exe" failed with exit status 1120
Run Code Online (Sandbox Code Playgroud) 我有一个包含100多个列和行的数据库(PostgreSQL)。表中的某些单元格是空的,我使用python编写脚本,因此None值放置在空单元格中,但是当我尝试插入表中时会显示以下错误。
" psycopg2.ProgrammingError: column "none" does not exist"
Run Code Online (Sandbox Code Playgroud)
我正在使用psycopg2作为python-postgres接口............有什么建议吗?
提前致谢......
这是我的代码:
list1=[None if str(x)=='nan' else x for x in list1];
cursor.execute("""INSERT INTO table VALUES %s""" %list1;
);
Run Code Online (Sandbox Code Playgroud) 我有一个在psql中运行良好的查询,但在我的程序中生成错误:
sql = 'SELECT id, x, y FROM table_name WHERE y NOT LIKE 'pa%' AND x IS NOT NULL;'
cur.execute(sql)
Run Code Online (Sandbox Code Playgroud)
关于它为什么不起作用的任何指示?或者任何建议,我该怎么解决?
我正在使用 django-extensionsreset_db命令并收到以下错误:
psycopg2.ProgrammingError: database "database_name" already exists
Run Code Online (Sandbox Code Playgroud)
我已经验证我的用户具有 CreateDB 和登录权限。所有软件包都是最新的。我怎么知道为什么它不能正确重置数据库?
在这里,我需要在python中的postgresql表中插入一些值.
我尝试下面的代码,但一个错误是"psycopg2.ProgrammingError:语法错误在或附近"st"\ r,referer:http:// localhost:8080 / "
conn = psycopg2.connect(database="Test", user="dev", password="123456", host="192.168.1.104", port="5432")
cursor = conn.cursor()
cursor.execute('''INSERT INTO signup (id, name, email, dob, address, mobile, password) VALUES (1,%s,%s,%s,%s,%s,%s)''' % (name,email,dob,address,mobile,password))
conn.commit()
Run Code Online (Sandbox Code Playgroud)
请解决这个问题,提前谢谢.....
在python 3+中,我想将字典(或pandas数据帧)中的值插入数据库.我选择了带有postgres数据库的psycopg2.
问题是我无法找到正确的方法来做到这一点.我可以轻松地连接要执行的SQL字符串,但psycopg2文档明确警告不要这样做.理想情况下我想做这样的事情:
cur.execute("INSERT INTO table VALUES (%s);", dict_data)
Run Code Online (Sandbox Code Playgroud)
并希望执行可以弄清楚dict的键与表中的列匹配.这没用.从psycopg2文档的例子我得到了这种方法
cur.execute("INSERT INTO table (" + ", ".join(dict_data.keys()) + ") VALUES (" + ", ".join(["%s" for pair in dict_data]) + ");", dict_data)
Run Code Online (Sandbox Code Playgroud)
我得到了一个
TypeError: 'dict' object does not support indexing
Run Code Online (Sandbox Code Playgroud)
将字典插入到具有匹配列名的表中的最为植物方式是什么?
我现在干净安装了Django v1.11.10.当我运行python manage.py runserver一切正常.但是当我尝试连接到Postgres数据库时,我安装了包pip install psycopg2,修改了DATABASESvaribale,在运行runserver命令后它失败并Illegal instruction出现错误:
Performing system checks...
System check identified no issues (0 silenced).
Illegal instruction: 4
Run Code Online (Sandbox Code Playgroud)
它是什么?如何获取日志错误?我使用Mac OS 10.11.6,PostgresApp(尝试在v9和v10服务器上检查错误源).Python 3.6.4(通过virtualenv).
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mydb',
'USER': 'sirjay',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '',
}
}
Run Code Online (Sandbox Code Playgroud)
如果我设置NAME或USER不正确,或者即使我关闭Postgres.app服务器,错误也是一样的.这就像Django没有看到Postgres.但随着phpPgAdmin我可以连接到Postgres服务器.
我正在使用MAC和python版本2.7.14
Collecting psycopg2
Could not fetch URL https://pypi.python.org/simple/psycopg2/: There was a problem confirming the ssl certificate: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:661) - skipping
Could not find a version that satisfies the requirement psycopg2 (from versions: )
No matching distribution found for psycopg2
Run Code Online (Sandbox Code Playgroud) 我已经读过一些有关“语法错误在或附近”的问答,但是没有一个可以解决我的问题。
错误示例:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.ProgrammingError: syntax error at or near "UPDATE"
LINE 1: DECLARE "teste" CURSOR WITHOUT HOLD FOR UPDATE applicant SET...
^
Run Code Online (Sandbox Code Playgroud)
请注意^右侧的UPDATE。我已经测试了更新脚本,pgadmin 4并且一切正常。
该脚本非常简单:
UPDATE applicant
SET cv_recrutai_entities = %s
WHERE id = %s
Run Code Online (Sandbox Code Playgroud)
我的代码基本上是:
def _connect_database():
return psy.connect(
dbname=settings.DATABASE['DBNAME'],
host=settings.DATABASE['HOST'],
port=settings.DATABASE['PORT'],
user=settings.DATABASE['USER'],
password=settings.DATABASE['PASSWORD'],
application_name=settings.env
)
# Connects to database
conn = _connect_database()
# Creats a named cursor
cur = conn.cursor('test')
# Execute …Run Code Online (Sandbox Code Playgroud) psycopg2 ×10
postgresql ×8
python ×7
django ×2
command-line ×1
dictionary ×1
insert ×1
installation ×1
linker ×1
pickle ×1
pip ×1
psql ×1
python-3.x ×1
sql-update ×1
windows ×1