目前,我正在尝试将Django配置为在项目上使用,并且在尝试运行时遇到持久性错误python manage.py syncdb
.
File "/x/x/x/x/x/x/base.py", line 23, in ?
raise ImproperlyConfigured("Error loading psycopg module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading psycopg module: No module named psycopg
Run Code Online (Sandbox Code Playgroud)
我在这里和其他网站上发现的类似问题的其他讨论最终由用户下载和安装psycopg解决,但除非我遗漏了一些关键的东西,否则我已经多次这样做了.我下载了tarball,在我的服务器上解压缩,运行python setup.py build
并python setup.py install
使用--prefix将它指向我现有的Python Path ...我可以去导航到该文件夹并查看各种psycopg文件,但无论出于何种原因,当我尝试让我的新项目与数据库同步,它找不到psycopg,因此不会与db通信.
注意:hostmonster.com帐号,已经尝试了psycopg2的多个发行版本.
我有一个从数据库中获取的行ID列表.我正在使用python和psycopg2,我的问题是如何有效地将这些ID传递给SQL?我的意思是,如果我知道该列表的长度,这很容易,因为我总是可以根据需要手动或自动将多少"%s"表达式添加到查询字符串中,但在这里我不知道我需要多少它们.重要的是我需要使用sql"id IN(id1,id2,...)"语句选择行.我知道可以检查列表的长度并将合适数量的"%s"连接到查询字符串中,但我担心它会非常缓慢和丑陋.有没有人知道如何解决它?请不要问为什么我需要用"IN"语句来做 - 这是一个基准测试,是我课堂作业的一部分.提前致谢!
我正在寻找将数百万个元组批量插入数据库的最有效方法.我正在使用Python,PostgreSQL和psycopg2.
我创建了一个很长的郁金香列表,应该插入到数据库中,有时使用几何修饰符Simplify
.
这种天真的方式是使用字符串格式化INSERT
语句列表,但我还读到了其他三种方法:
pyformat
绑定样式进行参数化插入executemany
在元组列表中使用,和COPY
.似乎第一种方式是最有效的,但我很感激您的见解和代码片段告诉我如何正确地做到这一点.
我在使用POSTGRESQL的Django项目设置中遇到问题.
这是我的setting.py数据库设置
DATABASES = {
'default':{
'ENGINE':'django.db.backends.postgresql_psycopg2', # '.postgresql_psycopg2', '.mysql', or '.oracle'
'NAME':'indivo', # Required to be non-empty string
'USER':'indivo', # Required to be non-empty string
'PASSWORD':'ritvik',
'HOST':'', # Set to empty string for localhost.
'PORT':'', # Set to empty string for default.
},
}
Run Code Online (Sandbox Code Playgroud)
现在在postgres后端我所做的是.
rohit@rohit-desktop:~$ sudo su - postgres
postgres@rohit-desktop:~$ createuser --superuser indivo # create a super user indivo
postgres@rohit-desktop:~$ psql # open psql terminal
psql (9.1.8)
Type "help" for help.
postgres=# \password indivo # set the password …
Run Code Online (Sandbox Code Playgroud) 我想用Python创建Postgres数据库.
con = psql.connect(dbname='postgres',
user=self.user_name, host='',
password=self.password)
cur = con.cursor()
cur.execute("CREATE DATABASE %s ;" % self.db_name)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
InternalError: CREATE DATABASE cannot run inside a transaction block
Run Code Online (Sandbox Code Playgroud)
我正在使用psycopg2进行连接.我不明白这是什么问题.我想做的是连接到数据库(Postgres):
psql -postgres -U UserName
Run Code Online (Sandbox Code Playgroud)
然后创建另一个数据库:
create database test;
Run Code Online (Sandbox Code Playgroud)
这就是我通常所做的,我想通过创建Python脚本来自动执行此操作.
我正在尝试使用Postgres和Docker构建Flask应用程序.我想连接到Postgres的AWS RDS实例,但是使用Docker作为我的Flask应用程序.但是,当尝试设置psycopg2
它时会遇到错误,因为它无法找到pg_config
.这是错误:
Building api
Step 1/5 : FROM python:3.6.3-alpine3.6
---> 84c98ca3b5c5
Step 2/5 : WORKDIR /usr/src/app
---> Using cache
---> 407c158f5ee4
Step 3/5 : COPY . .
---> 966df18d329e
Step 4/5 : RUN pip install -r requirements.txt
---> Running in 284cc97aeb63
Collecting aniso8601==1.3.0 (from -r requirements.txt (line 1))
Downloading aniso8601-1.3.0.tar.gz (57kB)
Collecting click==6.7 (from -r requirements.txt (line 2))
Downloading click-6.7-py2.py3-none-any.whl (71kB)
Collecting Flask==0.12.2 (from -r requirements.txt (line 3))
Downloading Flask-0.12.2-py2.py3-none-any.whl (83kB)
Collecting Flask-RESTful==0.3.6 (from -r requirements.txt …
Run Code Online (Sandbox Code Playgroud) 我从 psycopg2 收到以下错误:
Traceback (most recent call last): File "test1.py", line 1, in
<module>
import psycopg2 File "/Users/xxx/Library/Python/2.7/lib/python/site-packages/psycopg2/__init__.py",
line 50, in <module>
from psycopg2._psycopg import ( # noqa ImportError:
dlopen(/Users/xxx/Library/Python/2.7/lib/python/site-packages/psycopg2/_psycopg.so,
2): Symbol not found: _PQbackendPID Referenced from:
/Users/xxx/Library/Python/2.7/lib/python/site-packages/psycopg2/_psycopg.so
Expected in: flat namespace in
/Users/eyabadal/Library/Python/2.7/lib/python/site-packages/psycopg2/_psycopg.so
Run Code Online (Sandbox Code Playgroud)
对于如何解决这个问题,有任何的建议吗?
我试图使用Python将数据插入PostgreSQL数据库表.我没有看到任何语法错误,但由于某种原因,我的数据没有插入到数据库中.
conn = psycopg2.connect(connection)
cursor = conn.cursor()
items = pickle.load(open(pickle_file,"rb"))
for item in items:
city = item[0]
price = item[1]
info = item[2]
query = "INSERT INTO items (info, city, price) VALUES (%s, %s, %s);"
data = (info, city, price)
cursor.execute(query, data)
Run Code Online (Sandbox Code Playgroud) 目前,我有以下方法使用执行INSERT/UPDATE/DELETE语句psycopg2
中Python
:
def exec_statement(_cxn, _stmt):
try:
db_crsr = _cxn.cursor()
db_crsr.execute(_stmt)
_cxn.commit()
db_crsr.close()
return True
except:
return False
Run Code Online (Sandbox Code Playgroud)
但我真正想要它做的是,而不是bool,返回受事务影响的行数,如果操作失败则返回-1.
有没有办法让一些行受到影响_cxn.commit()
?例如,对于单个INSERT,对于DELETE或UPDATE,它将始终为1,受语句影响的行数等?
这是我第一次找不到关于某些技术问题的答案这是我的问题:
>> conn=psycopg2.connect(database="mydb", user="postgres", password="123",port=5432)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.OperationalError: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Run Code Online (Sandbox Code Playgroud)
List of databases Name | Owner | Encoding | Collation | Ctype | Access privileges ---------------+----------+----------+------------+------------+----------------------- checkdatabase | postgres | UTF8 | en_US.utf8 | en_US.utf8 | mydb | postgres | UTF8 | en_US.utf8 | …