python获取Sqlserver所有Schema和table
时间: 2024-02-28 17:54:17 浏览: 244
可以使用pyodbc和pandas库来获取Sqlserver中所有的Schema和table信息,具体代码如下:
```python
import pyodbc
import pandas as pd
#连接Sqlserver数据库
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=<server_name>;DATABASE=<database_name>;UID=<username>;PWD=<password>')
#获取所有的Schema和table信息
df_schema = pd.read_sql_query("SELECT SCHEMA_NAME(schema_id) AS [Schema], name AS [Table] FROM sys.tables ORDER BY [Schema], [Table]", conn)
#关闭数据库连接
conn.close()
#打印输出
print(df_schema)
```
其中,需要替换代码中的`<server_name>`、`<database_name>`、`<username>`和`<password>`为对应的Sqlserver的连接信息。执行以上代码后,即可获取Sqlserver中所有的Schema和table信息,并通过DataFrame的形式进行输出。
相关问题
python给sqlserver表字段添加注释
在 Python 中,可以使用 `pyodbc` 或 `pymssql` 等库连接 SQL Server 数据库,并使用 SQL 语句来为表中的字段添加注释。以下是一个示例:
```python
import pyodbc
# 连接数据库
conn = pyodbc.connect('DRIVER={SQL Server};SERVER=server_name;DATABASE=db_name;UID=user_id;PWD=password')
# 创建游标
cursor = conn.cursor()
# 添加注释
sql = """
EXEC sys.sp_addextendedproperty
@name = N'MS_Description',
@value = N'Column description',
@level0type = N'Schema',
@level0name = 'dbo',
@level1type = N'Table',
@level1name = 'table_name',
@level2type = N'Column',
@level2name = 'column_name';
"""
cursor.execute(sql)
# 提交事务并关闭连接
cursor.commit()
cursor.close()
conn.close()
```
其中,`server_name`、`db_name`、`user_id` 和 `password` 分别需要替换为实际的 SQL Server 服务器名、数据库名、用户名和密码。`table_name` 需要替换为实际的表名,`column_name` 需要替换为实际的字段名,`Column description` 需要替换为实际的注释内容。该代码将会在指定的表和字段上添加一个扩展属性,用于描述该字段。
如果需要修改已有的注释,可以使用相同的 SQL 语句,将新的注释内容替换为原有的注释内容即可。
注意:在使用 `pyodbc` 或 `pymssql` 等库连接 SQL Server 数据库时,需要先安装对应的库,并根据实际情况修改连接字符串。
利用python以表格的形式输出SQL Server的表
可以使用Python中的pandas库和pyodbc库来连接SQL Server数据库,并将表格以DataFrame的形式输出。以下是一个示例代码:
```python
import pandas as pd
import pyodbc
# 连接数据库
server = 'your_server_name'
database = 'your_database_name'
username = 'your_username'
password = 'your_password'
cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+password)
# 查询数据库中所有的表名
cursor = cnxn.cursor()
cursor.execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'")
table_names = [table[0] for table in cursor.fetchall()]
# 输出每个表格的前10行
for table_name in table_names:
df = pd.read_sql_query(f"SELECT TOP 10 * FROM {table_name}", cnxn)
print(f"Table Name: {table_name}\n")
print(df)
print("\n")
```
这段代码连接到SQL Server数据库,查询所有表格的表名,并输出每个表格的前10行数据。你可以根据需要进行修改,例如输出所有数据、输出特定表格的数据等。
阅读全文