gpt4 book ai didi

python - PostgreSQL 使用 Python pyodbc 将文本字段中的 LF 替换为 CR+LF

转载 作者:行者123 更新时间:2023-11-29 12:46:43 25 4
gpt4 key购买 nike

在 MS Windows 上,使用 Python 3 的 pyodbc 模块,我正在使用 PostgreSQL。当我使用 PostgreSQL 的 TEXT 数据类型并尝试存储类 UNIX 的 EOL 时,原来的 \n 被替换为 \r\n。请参见下面的示例。

import pyodbc

def main():

connection = pyodbc.connect(
'DRIVER={PostgreSQL Unicode(x64)};'
'SERVER=127.0.0.1;'
'UID=postgres;'
'PWD=topsecret;'
'DATABASE=db1');
cursor = connection.cursor();

cursor.execute('CREATE SCHEMA schema1 '
'CREATE TABLE table1 ('
'key SERIAL PRIMARY KEY,'
'value TEXT'
')');

cursor.execute('INSERT INTO schema1.table1 (value) VALUES (?)',
'hello\nworld');

r = cursor.execute('SELECT value FROM schema1.table1').fetchone()[0];

print(r == 'hello\nworld'); # prints False

print(r == 'hello\r\nworld'); # prints True


if __name__ == '__main__':
main();

确实,这种行为在某些情况下可能是有利的。但是,就我而言,这是不可取的。我无法在 PostgreSQL 的文档中找到如何关闭此功能,并且我实际上不确定替换发生的确切位置。有什么想法吗?

最佳答案

这很可能是 ODBC 驱动程序本身的行为,而不是它的 Python 接口(interface)。也就是说,您几乎可以肯定使用 psycopg2 会更好,它会更简单、更强大和更快。

就像 psqlODBC 一样,psycopg2 包装了 libpq 但它没有笨重的 ODBC 中间层。

关于python - PostgreSQL 使用 Python pyodbc 将文本字段中的 LF 替换为 CR+LF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16874714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com