我不熟悉python和pyodbc
我尝试从progress openedge数据库打印表中的第一行。(Windows 7)以下是未运行的代码块:
cursor.execute("select my-nr, my-dt-my from mytable")
row = cursor.fetchone()
print(row.my-nr, row.my-dt-my)
这将为错误提供未定义的名称:“nr” 未定义名称“dt” 未定义名称“my”
我想这和点后面的负号有关。印刷品(行。我的-编号:,行。我的-dt车型年款)
以前从数据库中打印出表名和列名很容易,但由于某些原因,打印出行更困难。在
有什么办法把这些行打印出来吗?在
我认为您需要更改数据库的变量名,确保它们不包含任何“-”字符。 变量不能包含python保留的字符。例如,您必须避免连字符(-),感叹号(!),冒号(:)等。在
根据this answer的说法,在变量名中下划线(U)似乎是唯一允许的字符。在
我能想到的最简单的解决办法就是这样。首先,包含连字符的列需要在OpenEdge(see here)中引用。其次,可以对列进行别名,以便它们可以作为有效的Python属性引用。你需要这样做:
祝你好运!在
pyodbc允许我们使用
row.column_name
形式引用pyodbc.Row
对象中的值,前提是列名是合法的Python标识符。例如,我们可以做一些类似的事情打印“城市”列的值。不幸的是,
^{pr2}$my-nr
不是一个合法的Python标识符,所以如果我们试图使用。。。在。。。Python将其解析为“
row.my
减nr
”,其中row.my
将被解释为Row对象中的列,nr
将被解释为Python变量。在要解决此问题,我们可以获取列名称的列表,将这些名称与行值合并到字典中,然后引用字典中的值:
相关问题 更多 >
编程相关推荐