import pymssql sql1="SELECT top 10* FROM Table_1" #读取前10行数据,table_1是表名 h='DESKTOP-RFLGSGE' #主机名 u='sa' #登陆用户名 p='2006650123' #密码 d='szm' #数据库名 conn=pymssql.connect(host=h,user=u,password=p,database=d) cursor = conn.cursor() cursor.execute(sql1) print(cursor.fetchall()) # 数据库操作 # (1)定义一个格式化的sql语句 sql = 'insert into dbo.Table_1(project,address,developer,date) values(%s,%s,%s,%s) ' # (2)准备数据 data = ('居住商业(HN-20006号高深东路北-1地块)','浑南区沈中大街17号','沈阳中海海嘉房地产开发有限公司','2023-04-26') # (3)操作 try: cursor.execute(sql,data) conn.commit() except Exception as e: print('插入数据失败',e) conn.rollback() #回滚 #关闭游标 cursor.close() #关闭连接 conn.close()
时间: 2023-12-08 11:03:04 浏览: 38
这段代码是用 Python 中的 pymssql 模块连接到 MSSQL 数据库,并进行一些数据操作。具体来说,它读取了数据库中 Table_1 表的前 10 行数据,并插入了新的数据到该表中。其中,建立数据库连接时需要指定主机名、登录用户名、密码和数据库名;数据插入操作则需要先定义格式化的 SQL 语句,然后将具体数据传入并执行。如果操作失败,则进行回滚操作。最后,关闭游标和连接。
相关问题
SELECT column_name FROM information_schema.columns WHERE table_name = 'database_info' select * from database_info。 将这两句sql组合成map的形式
假设数据库连接已经建立,可以使用以下代码将两个SQL语句组合成Map形式:
```python
import pymysql
# 建立数据库连接
conn = pymysql.connect(host='localhost', port=3306, user='root', password='password', db='mydb')
# 创建游标对象
cursor = conn.cursor()
# 执行第一个SQL语句并获取结果
cursor.execute("SELECT column_name FROM information_schema.columns WHERE table_name = 'database_info'")
columns = cursor.fetchall()
# 执行第二个SQL语句并获取结果
cursor.execute("SELECT * FROM database_info")
data = cursor.fetchall()
# 将结果转换为Map形式
result_map = []
for row in data:
row_dict = {}
for i in range(len(columns)):
row_dict[columns[i][0]] = row[i]
result_map.append(row_dict)
# 关闭游标和数据库连接
cursor.close()
conn.close()
# 打印结果
print(result_map)
```
这样可以将查询结果以Map的形式返回,其中每个Map键对应表的列名,Map值对应该行数据对应列的值。
sql = "INSERT INTO main_table SELECT * FROM tmp_table ON DUPLICATE KEY UPDATE col1=VALUES(col1), col2=VALUES(col2), ..."对于excel有多级表头索引的数据怎么修改代码
如果你的数据有多级表头索引,那么你需要对代码进行一些修改:
1. 在读取 Excel 数据时,使用 Pandas 库的 `read_excel()` 函数,并指定参数 `header=[0, 1, ...]` 来读取多级表头索引。例如,如果你的 Excel 文件有两级表头索引,那么可以这样读取数据:
```python
import pandas as pd
df = pd.read_excel('your_excel_file.xlsx', header=[0, 1])
```
2. 在生成 SQL 语句时,需要将多级表头索引转换为单级列名。可以使用 Pandas 库的 `stack()` 函数来实现。例如,如果你的数据有两级表头索引,那么可以这样转换列名:
```python
df = df.stack(level=0)
df.columns = ['_'.join(col).strip() for col in df.columns.values]
```
3. 最后,生成 SQL 语句时需要将转换后的列名进行拼接。可以使用类似下面的代码:
```python
columns = ', '.join(df.columns)
sql = f"INSERT INTO main_table ({columns}) SELECT {columns} FROM tmp_table ON DUPLICATE KEY UPDATE ..."
```
注意,这里的代码仅供参考,具体实现还需要根据你的数据格式进行修改。