pymssql.ProgrammingError: (207, b"Invalid column name 'nvc_content'.DB-Lib error message 20018, severity 16:\nGeneral SQL Server error: Check messages from the SQL Server\n")怎么修改代码
时间: 2024-03-02 21:52:06 浏览: 192
这个错误是由于 SQL Server 数据库表中没有 'nvc_content' 列导致的。你需要检查你的 SQL 查询语句,确认查询语句中的列名是正确的,或者检查你的数据库表是否包含该列。
如果查询语句中的列名是正确的,你可以尝试更新你的数据库表,添加 'nvc_content' 列。以下是添加列的示例 SQL 语句:
```
ALTER TABLE [table_name] ADD [nvc_content] NVARCHAR(MAX);
```
请将 [table_name] 替换为你的表名。
如果你不想添加该列,你可以修改你的查询语句,使用正确的列名来代替 'nvc_content'。
相关问题
如何使得这个python代码里的name1和picture_str是变量:data = {'nvc_title': 'name1', 'nvc_news_content': 'picture_str'} sql = "INSERT INTO t_news (nvc_title, nvc_news_content) VALUES (%s, %s)" val = (data['name1'], data['picture_str']) mycursor.execute(sql,val怎么修改代码
如果要将`name1`和`picture_str`变成变量,可以将它们从字符串文本修改为变量名,然后在val元组中传入变量的值。代码修改如下:
```
title = 'name1'
content = 'picture_str'
data = {'nvc_title': title, 'nvc_news_content': content}
sql = "INSERT INTO t_news (nvc_title, nvc_news_content) VALUES (%s, %s)"
val = (title, content)
mycursor.execute(sql, val)
```
在这里,我们将`'name1'`和`'picture_str'`分别赋值给变量`title`和`content`,然后在字典`data`以及元组`val`中使用这两个变量。这样做的效果就是,插入到数据库中的值不再是固定的字符串文本,而是根据变量值动态生成的。
for row in sqlserver_result: user_doc = {'i_ui_identifier': row[0], 'nvc_user_name': row[1],'nvc_company': row[2], 'nvc_phone': row[3]} user_collection.insert_one(user_doc) mongo_cursor = user_collection.aggregate([ { "$lookup": { "from": "payCondition", "localField": "i_ui_identifier", "foreignField": "i_ui_identifier", "as": "pay_info" } } ]) mysql_cursor = mysql_conn.cursor() for row in mongo_cursor: wuliu_doc = { 'i_ui_identifier': row['i_ui_identifier'], 'nvc_user_name': row['nvc_user_name'], 'nvc_company': row['nvc_company'], 'nvc_phone': row['nvc_phone'], 'pay_info': row['pay_info'] } mysql_cursor.execute("INSERT INTO wuliu VALUES (%s, %s, %s, %s, %s)", (wuliu_doc['i_ui_identifier'], wuliu_doc['nvc_user_name'], wuliu_doc['nvc_company'], wuliu_doc['nvc_phone'],wuliu_doc['pay_info'])) mysql_conn.commit()这样的python代码正确吗?如果不正确,如何修改
这段 Python 代码的目的是将 SQL Server 数据库中的用户信息和 MongoDB 数据库中的支付信息合并,然后将结果插入到 MySQL 数据库的物流信息表中。
但是,这段代码有一个问题:在从 MongoDB 中查询结果时,返回的是一个游标对象,而不是一个字典对象,因此在 for 循环中需要使用字典的键值来访问结果。
以下是修改过的代码:
```python
for row in sqlserver_result:
user_doc = {'i_ui_identifier': row[0], 'nvc_user_name': row[1],'nvc_company': row[2], 'nvc_phone': row[3]}
user_collection.insert_one(user_doc)
mongo_cursor = user_collection.aggregate([{"$lookup": {"from": "payCondition", "localField": "i_ui_identifier", "foreignField": "i_ui_identifier", "as": "pay_info"}}])
mysql_cursor = mysql_conn.cursor()
for row in mongo_cursor:
i_ui_identifier = row['i_ui_identifier']
nvc_user_name = row['nvc_user_name']
nvc_company = row['nvc_company']
nvc_phone = row['nvc_phone']
pay_info = row['pay_info'][0]
wuliu_doc = {
'i_ui_identifier': i_ui_identifier,
'nvc_user_name': nvc_user_name,
'nvc_company': nvc_company,
'nvc_phone': nvc_phone,
'pay_info': pay_info
}
mysql_cursor.execute("INSERT INTO wuliu VALUES (%s, %s, %s, %s, %s)",
(wuliu_doc['i_ui_identifier'], wuliu_doc['nvc_user_name'], wuliu_doc['nvc_company'], wuliu_doc['nvc_phone'], wuliu_doc['pay_info']))
mysql_conn.commit()
```
在这个修改后的代码中,我们使用 `row['pay_info'][0]` 来访问 MongoDB 中的支付信息。另外,我们还将 MongoDB 中的每个字段都存储到了相应的变量中,以便更好地理解代码。
阅读全文