请问如何获取当前数据库中的表格?
我正在使用postgresql-8.4和psycopg2。
请问如何获取当前数据库中的表格?
我正在使用postgresql-8.4和psycopg2。
这对我有帮助:
cursor.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table in cursor.fetchall():
print(table)
pg_class 存储所有必要的信息。
执行以下查询将作为元组列表返回用户定义的表
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.execute("select relname from pg_class where relkind='r' and relname !~ '^(pg_|sql_)';")
print cursor.fetchall()
输出:
[('table1',), ('table2',), ('table3',)]
def table_exists(con, table_str):
exists = False
try:
cur = con.cursor()
cur.execute("select exists(select relname from pg_class where relname='" + table_str + "')")
exists = cur.fetchone()[0]
print exists
cur.close()
except psycopg2.Error as e:
print e
return exists
def get_table_col_names(con, table_str):
col_names = []
try:
cur = con.cursor()
cur.execute("select * from " + table_str + " LIMIT 0")
for desc in cur.description:
col_names.append(desc[0])
cur.close()
except psycopg2.Error as e:
print e
return col_names
"select exists(select relname from pg_class where relname='" + table_str + "')"
可以用来检查表是否存在。 - wordsforthewiseexists
在 table_exists
中似乎有点混淆:如果表不存在,它会返回 False
,但不确定如果表存在但为空是否会得到一个 falsey 值,以及如果表存在且非空,则返回表的第一行。最好将其默认为 None
而不是 False
。 - smciconnect()
参数并生成Python
list()
输出的Python3
代码片段:conn = psycopg2.connect(host='localhost', dbname='mySchema',
user='myUserName', password='myPassword')
cursor = conn.cursor()
cursor.execute("""SELECT relname FROM pg_class WHERE relkind='r'
AND relname !~ '^(pg_|sql_)';""") # "rel" is short for relation.
tables = [i[0] for i in cursor.fetchall()] # A list() of tables.
在打开游标后尝试这个
cur.execute("""
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public'
""")
# Fetch all the table names
table_names = cur.fetchall()
# Print the table names
for table_name in table_names:
print(table_name[0])
s = "SELECT"
s += " table_schema"
s += ", table_name"
s += " FROM information_schema.tables"
s += " WHERE"
s += " ("
s += " table_schema = '"+SCHEMA+"'"
s += " AND table_type = 'BASE TABLE'"
s += " )"
s += " ORDER BY table_schema, table_name;"
db_cursor.execute(s)
list_tables = db_cursor.fetchall()
您可以在Python 3中使用此代码
import psycopg2
conn=psycopg2.connect(database="your_database",user="postgres", password="",
host="127.0.0.1", port="5432")
cur = conn.cursor()
cur.execute("select * from your_table")
rows = cur.fetchall()
conn.close()