Pandas在centos上用pypyodbc的属性名return中文
Pandas attribute names with pypyodbc on centos return in Chinese
我正在尝试使用 pypyodbc 和 pandas 连接到 postgres 数据库。我在 Centos 7 机器上使用 Python 2.7。
import pypyodbc
import pandas as pd
conn = pypyodbc.connect("Driver={PostgreSQL};Server=xxx;Port=xxx;Database=xxx;Uid=xxx;Pwd=xxx;")
cur = conn.cursor()
cur.execute("select * from client_list")
col_names = []
for elt in cur.description:
col_names.append(elt[0])
myDF=pd.DataFrame(cur.fetchall(),columns=col_names)
conn.close()
我的连接字符串指向一个 postgresql 数据库,我已经为其配置了一个 ODBC 连接。
我已经配置了 odbcinst.ini 和 odbc.ini:
/etc/odbc.ini -
[AlgoDB]
Description = PostgreSQL connection to 'AlgoDB' database
Driver = /usr/lib64/psqlodbc.so
Database = xxx
Servername = xxx
UserName = xxx
Password = xxx
Port = 5432
Protocol = 8.1
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
/etc/odbcinst.ini:
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbcw.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbc.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
我能够检索查询结果,但是返回的字段名称是中文的:
for index, row in myDF.iterrows():
print(row)
导致:
汣敩瑮湟浡e my client's name
灡彰牵l浡e https://my client's url/
当我使用 windows 机器时,我得到的属性名称是英文的:
client_name my client's name
client_url https://my client's url/
如果我使用 isql 和 运行 那里的查询,字段名称是英文的:
sudo isql -v AlgoDB xxx xxx
我做错了什么??
谢谢。
在尝试重新安装 ODBC 驱动程序并切换到 sqlalchemy 后,我放弃了 pypyodbc:
import sqlalchemy as sa
import pandas as pd
eng = sa.create_engine("postgresql://user:pass@ip:5432/DBName")
myDF = pd.read_sql("select * from client_list",eng)
我正在尝试使用 pypyodbc 和 pandas 连接到 postgres 数据库。我在 Centos 7 机器上使用 Python 2.7。
import pypyodbc
import pandas as pd
conn = pypyodbc.connect("Driver={PostgreSQL};Server=xxx;Port=xxx;Database=xxx;Uid=xxx;Pwd=xxx;")
cur = conn.cursor()
cur.execute("select * from client_list")
col_names = []
for elt in cur.description:
col_names.append(elt[0])
myDF=pd.DataFrame(cur.fetchall(),columns=col_names)
conn.close()
我的连接字符串指向一个 postgresql 数据库,我已经为其配置了一个 ODBC 连接。 我已经配置了 odbcinst.ini 和 odbc.ini:
/etc/odbc.ini -
[AlgoDB]
Description = PostgreSQL connection to 'AlgoDB' database
Driver = /usr/lib64/psqlodbc.so
Database = xxx
Servername = xxx
UserName = xxx
Password = xxx
Port = 5432
Protocol = 8.1
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
/etc/odbcinst.ini:
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/psqlodbcw.so
Setup = /usr/lib/libodbcpsqlS.so
Driver64 = /usr/lib64/psqlodbc.so
Setup64 = /usr/lib64/libodbcpsqlS.so
FileUsage = 1
我能够检索查询结果,但是返回的字段名称是中文的:
for index, row in myDF.iterrows():
print(row)
导致:
汣敩瑮湟浡e my client's name
灡彰牵l浡e https://my client's url/
当我使用 windows 机器时,我得到的属性名称是英文的:
client_name my client's name
client_url https://my client's url/
如果我使用 isql 和 运行 那里的查询,字段名称是英文的:
sudo isql -v AlgoDB xxx xxx
我做错了什么?? 谢谢。
在尝试重新安装 ODBC 驱动程序并切换到 sqlalchemy 后,我放弃了 pypyodbc:
import sqlalchemy as sa
import pandas as pd
eng = sa.create_engine("postgresql://user:pass@ip:5432/DBName")
myDF = pd.read_sql("select * from client_list",eng)