使用pandas.read_sql列出SQL表

9

我想要打开一个扩展名为.mdf的SQL 2005数据库文件,以下是我的尝试:

import pandas as pd
import pyodbc

server = 'server_name'
db = 'database_name'

conn = pyodbc.connect('DRIVER={SQL Server};SERVER=' + server + ';DATABASE=' + db + ';Trusted_Connection=yes')

sql = """

SELECT * FROM table_name

"""
df = pd.read_sql(sql, conn)

有没有一种使用Pandas或pyodbc查询数据库并列出所有表的方法?我在数据库方面几乎没有经验,所以任何帮助都将是巨大的。

4个回答

3
import pyodbc as db

import pandas as pd

conn = db.connect("DRIVER={SQL Server}; SERVER=YourServerName; PORT=1433; DATABASE=YourDB; UID=User; PWD=Password;")

cursor = conn.cursor()

cursor.execute('''select * from sys.databases''')

df=pd.DataFrame(cursor.fetchall())

1
你应该编辑这段文本,提供你所做的上下文,并格式化代码。 - Ryan Schaefer

3

1
使用sqllite3和pandas,您可以这样做:
import sqlite3 
import pandas as pd 
  
# create a connection 
con = sqlite3.connect('database.db') 
data = pd.read_sql_query('SELECT name from sqlite_master where type= "table";', con) 
  
# show first 5 table names
data.head()

0

'SELECT * FROM information_schema.tables' 的问题在于它返回了很多信息,例如:'TABLE_CATALOG'、'TABLE_SCHEMA'、'TABLE_NAME'、'TABLE_TYPE'、'ENGINE' 等等。

如果你只需要表名列表,可以使用 this post 中的方法:

from sqlalchemy import create_engine
import pandas as pd

engine_new = create_engine("mysql+pymysql://YOUR_USER_NAME:YOUR_PASSWORD@DB_HOST:3306/DB_NAME")

connected_engine = engine_new.connect()

db_columns = pd.read_sql('SELECT table_name FROM information_schema.tables WHERE table_schema = "YOUR_DB_NAME"', connected_engine)

connected_engine.close()

这将返回一个名为'TABLE_NAME'的数据框(DataFrames)对象,您可以使用以下方法将其转换为列表:

list_of_database_columns = db_columns["TABLE_NAME"].to_list()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接