使用python循环调用多个SQL数据库

2024-06-16 09:36:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我要调用Microsoft SQL中的多个数据库:

driver = 'SQL Server'
server = '123'
tcon = 'yes'
uname = 'name'
pword = 'password'
query = "query1"

我将我的数据库列为以下列表:

db = ['DBA','DBB','DBC']

然后执行循环调用上面列表中的所有数据库,如下所示:

for i in db:
  sql_conn = pyodbc.connect(driver='{SQL Server}', host=server, database= f'{i}',
                  trusted_connection=tcon, user=uname, password=pword)

  df = pd.read_sql(query, sql_conn)

  df['DB_NAME'] = f'{i}' #to add name column in the dataframe

但是,我只从“DBC”获取数据。我想从上面的循环中得到三个独立的数据帧,比如df\u DBA、df\u DBB、df\u DBC


Tags: name数据库df列表sqlserverdriverpassword
1条回答
网友
1楼 · 发布于 2024-06-16 09:36:18

在每个循环中,df被一个新的数据帧覆盖。因此它将保存来自循环最后一次迭代的数据,这是来自DBC,因为它是列表中的最后一次

如果希望每个数据库中的数据都有单独的变量,请尝试以下操作:

def read_sql(query, db_name):
    conn = pyodbc.connect(driver='{SQL Server}', host=server, database=db_name,
                          trusted_connection=tcon, user=uname, password=pword)
    df = pd.read_sql(query, conn)
    df['DB_NAME'] = db_name
    return df


db_DBA = read_sql(query, 'DBA')
db_DBB = read_sql(query, 'DBB')
db_DBC = read_sql(query, 'DBC')

相关问题 更多 >