使用python查询SQL
问题描述:
我尝试使用python查询SQL,但它返回问号。使用python查询SQL
这是我的代码。
import cx_Oracle
import importlib
class CustomDatabase(object):
ROBOT_LIBRARY_SCOPE = 'GLOBAL'
def __init__(self):
"""
Initializes _dbconnection to None.
"""
self._dbconnection = None
self.db_api_module_name = None
def GetDataFromDatabaseByRow(self, db_connect_string, selectStatement, row):
db_api_2 = importlib.import_module("cx_Oracle")
db_connect_string = 'db_api_2.connect(%s)' % db_connect_string
self.db_api_module_name = "cx_Oracle"
self._dbconnection = eval(db_connect_string)
row = int(row)
cur = None
try:
cur = self._dbconnection.cursor()
cur.execute(selectStatement)
res = cur.fetchone()
i = 0
while (i < row):
if cur.rowcount == row:
data = res
res = cur.fetchone()
i = i + 1
if i == row:
for x in data:
result=x
#return result.decode('iso-8859-11')
return result
finally :
if cur :
self._dbconnection.rollback()
Obj=CustomDatabase()
A=Obj.GetDataFromDatabaseByRow("'BELL', 'BELL#', '192.168.1.10:110/BELL'","select book_name from book where id='100'",1)
print A
这是实际结果。
OOP ???????
这是DB中的值。
OOP แม่เจ้า
我想要的预期值是OOP แม่เจ้า
(泰文)。
你能帮我吗?
答
集开始的Python,例如
export NLS_LANG=.AL32UTF8
(是的,有在 '=' 后完全停止)之前在Oracle NLS_LANG
环境变量。
全球化Oracle文档是Database Globalization Support Guide
[更新] @安东尼 - tuininga pointed out,你可以简单地做:
import cx_Oracle conn = cx_Oracle.connect(connectString, encoding = "UTF-8", nencoding = "UTF-8")
有在这个例子中不需要NLS_LANG
。如果您不使用NCHAR数据,则可以省略nencoding
选项。
如果你修改这个'''select book_name from book where id ='100'''''''选择book_name from book where id = 100“'? – arnold
你需要修复你的编码。 – hd1