import pymysqlimport csvimport pandas as pdcon = pymysql.connect(host='localhost', user='root', port=3306, password='123456', charset="utf8", database='xscj')cur = con.cursor()with open('student.csv', encoding="utf-8") as f: data = [tuple(row) for row in csv.reader(f, delimiter=',')] print(data)sql = "insert into stu(sno, name, major, born, nian, money) values(%s, %s, %s, %s, %s, %s)"cur.executemany(sql, data)cur.execute("select * from stu")result = cur.fetchall()print(result)con.commit()cur.close()con.close()为什么还是会报错
时间: 2024-04-26 19:21:51 浏览: 156
你需要检查报错信息,以便确定问题所在。常见的报错信息有以下几种:
1. `pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax...")`:这种报错信息通常是由于 SQL 语句语法错误导致的。你需要检查 SQL 语句是否正确,特别是字段名、表格名、数据类型、占位符等是否正确。
2. `pymysql.err.InternalError: (1366, "Incorrect string value...")`:这种报错信息通常是由于编码不匹配导致的。你需要检查数据库表格的编码是否与 Python 代码中指定的编码一致,例如都使用 UTF-8 编码。
3. `pymysql.err.IntegrityError: (1062, "Duplicate entry...")`:这种报错信息通常是由于插入重复数据导致的。你需要检查 CSV 文件中是否有重复数据,或者在插入数据前先清空表格。
4. `pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on 'localhost'...")`:这种报错信息通常是由于连接数据库时出现问题导致的。你需要检查数据库服务是否正常运行,或者检查用户名、密码、端口号等是否正确。
根据报错信息,你可以定位问题并进行修正。如果你不确定如何解决问题,可以将报错信息提供给我,我会尽力帮助你。
相关问题
import pymysql import csv import pandas as pd con=pymysql.connect(host='localhost',user='root',port=3306,password='123456',charset="utf8",database='xscj') cur=con.cursor() with open('student.csv',encoding="utf-8") as f: gay=[tuple(row)for row in csv.reader(f,delimiter=',')] print(gay) sql="insert into stu(sno,name,major,born,nian,money) values(?,?,?,?,?,?)" cur.executemany(sql,gay) cur.execute("show stu") con.commit() con.rollback() cur.close() con.close()
这段代码是用 Python 与 MySQL 数据库交互的代码,具体来说,它的功能是将一个名为 "student.csv" 的 CSV 文件中的数据插入到 MySQL 数据库中的 "stu" 表格中。其中,CSV 文件中的数据使用逗号作为分隔符,每行数据对应数据库表格中的一条记录。代码中使用了 pymysql 模块与数据库建立连接,然后使用 csv 模块读取 CSV 文件中的数据,并将其转化为元组的列表。接着,使用 executemany() 方法将列表中的数据批量插入到数据库表格中。最后,使用 commit() 方法提交事务,或者使用 rollback() 方法回滚事务。需要注意的是,代码中的 SQL 语句使用了参数占位符 "?", 这种写法可以防止 SQL 注入攻击。
import pandas as pd import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.arima_model import ARIMA from sklearn.metrics import mean_squared_error import pymysql import time,os import re import requests import pandas as pd import urllib # ---------连接-------------- connect = pymysql.connect(host='localhost', # 本地数据库 user='root', password='123456', port=3306, charset='utf8') #服务器名,账户,密码,数据库名称 cur = connect.cursor() print(cur) # 读取数据 try: select_sqli = "SELECT time,xiaoliang FROM sheji.sale where chexing='海豚' ;" cur.execute(select_sqli) data=cur.fetchall() except Exception as e: print("创建数据表失败:", e) else: print("创建数据表成功;") #data = pd.read_csv('car_sales.csv', index_col='Month', parse_dates=True) time=[] for i in range(len(data)): time.append(datetime.strptime(data[i][0], '%Y-%m')) print(time)哪里有错
在这段代码中,你没有导入 `datetime` 模块,所以不能使用 `datetime.strptime()` 函数。你可以在代码开头添加 `from datetime import datetime` 来导入 `datetime` 模块,并修正报错问题。此外,在读取 `data` 时,你可以直接使用 `pd.DataFrame()` 函数将其转化为 Pandas DataFrame 格式,而不需要手动解析时间和数据。修改后的代码如下:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_model import ARIMA
from sklearn.metrics import mean_squared_error
import pymysql
import time,os
import re
import requests
import urllib
from datetime import datetime
# ---------连接--------------
connect = pymysql.connect(host='localhost', # 本地数据库
user='root',
password='123456',
port=3306,
charset='utf8') #服务器名,账户,密码,数据库名称
cur = connect.cursor()
print(cur)
# 读取数据
try:
select_sqli = "SELECT time,xiaoliang FROM sheji.sale where chexing='海豚';"
cur.execute(select_sqli)
data = pd.DataFrame(cur.fetchall(), columns=['time', 'xiaoliang'])
except Exception as e:
print("读取数据失败:", e)
else:
print("读取数据成功")
# 转换时间格式
data['time'] = pd.to_datetime(data['time'], format='%Y-%m')
print(data)
```
阅读全文
相关推荐
















