相关疑难解决方法(0)

postgresql中的字符串文字和转义字符

尝试将转义字符插入表中会导致警告.

例如:

create table EscapeTest (text varchar(50));

insert into EscapeTest (text) values ('This is the first part \n And this is the second');
Run Code Online (Sandbox Code Playgroud)

产生警告:

WARNING:  nonstandard use of escape in a string literal
Run Code Online (Sandbox Code Playgroud)

(使用PSQL 8.2)

有谁知道怎么解决这个问题?

string postgresql escaping

104
推荐指数
3
解决办法
24万
查看次数

将表名作为参数传递给psycopg2

我有以下代码,使用pscyopg2:

sql = 'select %s from %s where utctime > %s and utctime < %s order by utctime asc;'
data = (dataItems, voyage, dateRangeLower, dateRangeUpper)
rows = cur.mogrify(sql, data)
Run Code Online (Sandbox Code Playgroud)

这输出:

select 'waterTemp, airTemp, utctime' from 'ss2012_t02' where utctime > '2012-05-03T17:01:35+00:00'::timestamptz and utctime < '2012-05-01T17:01:35+00:00'::timestamptz order by utctime asc;
Run Code Online (Sandbox Code Playgroud)

当我执行它时,它会失败 - 这是可以理解的,因为表名周围的引号是非法的.

有没有办法合法地将表名作为参数传递,或者我是否需要执行(显式警告)字符串连接,即:

voyage = 'ss2012_t02'
sql = 'select %s from ' + voyage + ' where utctime > %s and utctime < %s order by utctime asc;'
Run Code Online (Sandbox Code Playgroud)

为任何见解干杯.

python sql postgresql sql-injection psycopg2

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

psycopg 错误,列不存在

我一直得到这个

错误:psycopg2.ProgrammingError:“someentry”列不存在。

该错误表明该列someentry不存在,当someentry它不是列时,它只是一个要输入到数据库中的值。

这是给出错误的代码:

cur.execute('INSERT INTO {0!s} (ip_id, item) VALUES ({1!s}{2!s})'.format('mytable',1,'someentry'))
Run Code Online (Sandbox Code Playgroud)

这是我创建表的方法:

tablename = 'mytable'
command = """
          CREATE TABLE IF NOT EXISTS {} (
                ip_id SERIAL PRIMARY KEY,
                item VARCHAR(255) NOT NULL
          )
          """.format(tablename)

cur.execute(command)
Run Code Online (Sandbox Code Playgroud)

postgresql psycopg2 python-3.x

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

Python Pyscopg:如何使用带有 LIMIT/OFFSET 和 WHERE 的占位符?

我目前正在尝试在 Python 的 psycopg 模块中的 PostgreSQL 查询中使用占位符。这是我正在使用的代码示例。

table.execute('SELECT * FROM table WHERE col2 = %s ORDER BY pID ASC LIMIT %s OFFSET %s;',(val1,val2,val3))
Run Code Online (Sandbox Code Playgroud)

我在某处读到,不可能对 LIMIT 和 OFFSET 使用这样的占位符,但是我应该对 WHERE = 使用这种占位符格式。

从python / postgresql / psycopg2中的用户输入安全地指定'order by'子句

有谁知道这个 sql 查询的正确占位符语法?谢谢!

python postgresql psycopg2

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