小编juk*_*juk的帖子

psycopg2实际上并没有插入数据

我需要将龙卷风中的JSON数据插入到postgres中,所以这里的测试如下:

from psycopg2 import connect

conn = connect("user='pguser' host='localhost' dbname='pgdb' password='pgpass'")
cursor = conn.cursor()

data = '[{"id":"sdf","name":"wqe","author":"vb"}]'

for row in eval(data):
  print row
  cursor.execute("""INSERT INTO books(id,name,author) VALUES('%s','%s','%s')""" % \
        (row['id'], row['name'], row['author'])
  )

>>> cursor.execute("SELECT * FROM books")
>>> cursor.fetchall()
[('sdf', 'wqe', 'vb')]
>>> 
$> psql -d pgdb -U pguser -W
Password for user pguser: 
psql (9.1.6)
Type "help" for help.

pgdb=> select * from books;
 id | name | author 
----+------+--------
(0 rows)
Run Code Online (Sandbox Code Playgroud)

正如你select在python shell中看到的那样,有一些数据,但在psql中有0行!我可能做错了什么?

Python 2.7.2+

python postgresql psycopg2

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

PostgreSQL:FOREIGN KEY/ON DELETE CASCADE

我有两张桌子在这里:

DROP   TABLE  IF EXISTS schemas.book;
DROP   TABLE  IF EXISTS schemas.category;
DROP   SCHEMA IF EXISTS schemas;
CREATE SCHEMA schemas;

CREATE TABLE schemas.category (
  id          BIGSERIAL PRIMARY KEY,
  name        VARCHAR   NOT NULL,
  UNIQUE(name)
);

CREATE TABLE schemas.book (
  id          BIGSERIAL PRIMARY KEY,
  published   DATE      NOT NULL,
  category_id BIGINT    NOT NULL REFERENCES schemas.category ON DELETE CASCADE ON UPDATE CASCADE,
  author      VARCHAR   NOT NULL,
  name        VARCHAR   NOT NULL,
  UNIQUE(published, author, name),
  FOREIGN KEY(category_id) REFERENCES schemas.category (id)
);
Run Code Online (Sandbox Code Playgroud)

所以逻辑很简单,用户删除了类别x下​​的所有书籍后,x从猫中删除,我尝试了上面的方法但是不起作用,在我清理了表格书之后,表格类别仍然填充,有什么问题?

sql postgresql cascade

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

psycopg2"IndexError:元组索引超出范围"使用带参数元组的'%'运算符时出错

这很好用:

 cc.execute("select * from books where name like '%oo%'")
Run Code Online (Sandbox Code Playgroud)

但如果第二个论点通过:

cursor.execute("select * from books where name like '%oo%' OFFSET % LIMIT %", (0,1))
Run Code Online (Sandbox Code Playgroud)

Psycopg错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
Run Code Online (Sandbox Code Playgroud)

如何避免这个错误?

python psycopg2

8
推荐指数
1
解决办法
6517
查看次数

7
推荐指数
1
解决办法
4268
查看次数

龙卷风和postgresql

我正在使用facebook的龙卷风演示

但我不想使用MySQL并尝试用PG替换它所以我继续进行修改,如下所示:

define("port", default=8888, help="run on the given port", type=int)
define("pgsql_host", default="127.0.0.1:5432", help="blog database host")
define("pgsql_database", default="pgdb", help="blog database name")
define("pgsql_user", default="admin", help="blog database user")
define("pgsql_password", default="pgpass", help="blog database password")
Run Code Online (Sandbox Code Playgroud)

        # Have one global connection to the blog DB across all handlers
    self.db = tornado.database.Connection(
        host=options.pgsql_host, database=options.pgsql_database,
        user=options.pgsql_user, password=options.pgsql_password)
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,应用程序会挂起,如何正确地将其迁移到PG?

实际上我在一段时间后得到错误:

    Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/tornado-2.4.1-py2.7.egg/tornado/database.py", line 84, in __init__
    self.reconnect()
  File "/usr/local/lib/python2.7/dist-packages/tornado-2.4.1-py2.7.egg/tornado/database.py", line 101, in reconnect
    self._db = MySQLdb.connect(**self._db_args)
  File "/usr/lib/pymodules/python2.7/MySQLdb/__init__.py", line 81, in …
Run Code Online (Sandbox Code Playgroud)

python postgresql facebook tornado

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