遍历多个表名的问题

2015-04-21 16:46:55 +08:00
 ikaros

cursor.execute("""select column_name, data_type, data_length, nullable from user_tab_columns where table_name=('%s')""", tab_name)

一直提示ORA-01036错误,数据库是Oracle,原因好像是%s旁边的两个引号? 这种情况要怎样把表名传进去呢?

2424 次点击
所在节点    MySQL
7 条回复
ikaros
2015-04-21 16:54:44 +08:00
转义了 ' 也不行
MasterYoda
2015-04-21 16:59:30 +08:00
% tab_name
fxxkgw
2015-04-21 17:05:13 +08:00
name=(%s) 而且也不需要加这么多""" """ ,直接用" "就可以了吧
是用MySQLdb么?
ikaros
2015-04-21 17:13:28 +08:00
@MasterYoda 这个我试过,invalid syntax = =


@fxxkgw Oracle,%s两边那两个单引号好像是必需的,直接用一个具体的表名是可以查到表结构的 ...
fxxkgw
2015-04-21 17:20:26 +08:00
@ikaros oracle没用过,只用过mysql,你tab_name是元组么?
ikaros
2015-04-21 17:20:49 +08:00
@fxxkgw
@MasterYoda 我错了,Oraclel里面的占位符不是%s Oracle里面是:1 :2这样的
ikaros
2015-04-21 17:23:14 +08:00
@fxxkgw
嗯 改成这样就好了
cursor.execute("""select column_name, data_type, data_length, nullable from user_tab_columns where table_name=:1""", (tab_names[index],))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/185273

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX