在 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 的文档中找到如何关闭此功能,并且实际上不确定替换发生在哪里。有任何想法吗?