Python 并非所有参数都在字符串格式化期间转换-读取csv、元组迭代、写入数据库
我还是个初学者,我在这个问题上坚持了一段时间。 我试图重新创建它,但有更多的列,甚至更多的行 数据集来自--> Plant_1_Generation_Data.csv 这个计划的想法是什么读取CSV格式的随机数据集并将这些数据插入我的SQL数据库 数据库连接正常。 已成功创建一个表,该表在数据库中可见 代码如下。请注意,我对“createtable”查询进行了注释,因为该表已经创建Python 并非所有参数都在字符串格式化期间转换-读取csv、元组迭代、写入数据库,python,tuples,pymysql,Python,Tuples,Pymysql,我还是个初学者,我在这个问题上坚持了一段时间。 我试图重新创建它,但有更多的列,甚至更多的行 数据集来自--> Plant_1_Generation_Data.csv 这个计划的想法是什么读取CSV格式的随机数据集并将这些数据插入我的SQL数据库 数据库连接正常。 已成功创建一个表,该表在数据库中可见 代码如下。请注意,我对“createtable”查询进行了注释,因为该表已经创建 import pandas as pd import pymysql '''defining attribute
import pandas as pd
import pymysql
'''defining attributes and csv reading'''
data = pd.read_csv(r'E:\Programiranje\csv_practice\Plants data\Plant_1_Generation_Data.csv')
df = pd.DataFrame(data, columns=['DATE_TIME', 'PLANT_ID', 'SOURCE_KEY', 'DC_POWER', 'AC_POWER',
'DAILY_YIELD','TOTAL_YIELD'])
'''database connection and table creation'''
cnx = pymysql.connect(host='localhost', user='ivan', password='XXX', db='plants_data')
cursor = cnx.cursor()
'''cursor.execute('CREATE TABLE plant_data(DATE_TIME datetime, PLANT_ID int, SOURCE_KEY
varchar(255), DC_POWER real,AC_POWER real, DAILY_YIELD real, TOTAL_YIELD real)')'''
'''touple iteration and writing into the table'''
for row in df.itertuples():
cursor.execute('''INSERT INTO plants_data.dbo.plant_data(DATE_TIME,PLANT_ID,SOURCE_KEY,DC_POWER,AC_POWER,DAILY_YIELD,TOTAL_YIELD)
VALUES(?, ?, ?, ?, ?, ?, ?)
''',
(row.DATE_TIME,
row.PLANT_ID,
row.SOURCE_KEY,
row.DC_POWER,
row.AC_POWER,
row.DAILY_YIELD,
row.TOTAL_YIELD,)
)
cnx.commit()
错误是
E:\Programiranje\csv_practice\Scripts\python.exe E:/Programiranje/Python/csv_practice/main.py
Traceback (most recent call last):
File "E:/Programiranje/Python/csv_practice/main.py", line 14, in <module>
cursor.execute(
File "E:\Programiranje\csv_practice\lib\site-packages\pymysql\cursors.py", line 161, in execute
query = self.mogrify(query, args)
File "E:\Programiranje\csv_practice\lib\site-packages\pymysql\cursors.py", line 140, in mogrify
query = query % self._escape_args(args, conn)
TypeError: not all arguments converted during string formatting
Process finished with exit code 1
非常感谢。DB-API连接器使用的默认占位符由连接器模块的属性值定义。在
pymysql
的情况下
>>> pymysql.paramstyle
'pyformat'
这意味着pymysql
需要%s“
作为占位符,而不是“?”
。如果传递的是值的映射而不是元组,则也可以使用样式“%(名称)s”
因此,查询应该是
'''INSERT INTO plants_data.dbo.plant_data(DATE_TIME,PLANT_ID,SOURCE_KEY,DC_POWER,AC_POWER,DAILY_YIELD,TOTAL_YIELD)
VALUES(%s, %s, %s, %s, %s, %s, %s)'''
DB-API连接器使用的默认占位符由连接器模块的属性值定义。在
pymysql
的情况下
>>> pymysql.paramstyle
'pyformat'
这意味着pymysql
需要%s“
作为占位符,而不是“?”
。如果传递的是值的映射而不是元组,则也可以使用样式“%(名称)s”
因此,查询应该是
'''INSERT INTO plants_data.dbo.plant_data(DATE_TIME,PLANT_ID,SOURCE_KEY,DC_POWER,AC_POWER,DAILY_YIELD,TOTAL_YIELD)
VALUES(%s, %s, %s, %s, %s, %s, %s)'''
谢谢,这很有帮助,我已经成功地将数据插入数据库。我以前也尝试过同样的方法,但没有成功。无论如何,我还删除了INSERT查询中的
dbo
部分,并更改了表和DATE\u TIME列,因为数据集中的日期和时间格式导致了一些奇怪的错误…谢谢,这很有帮助,我已成功地将数据插入数据库。我以前也尝试过同样的方法,但o.o.不起作用。无论如何,我还删除了INSERT查询中的dbo
部分,并更改了表和DATE\u TIME列,因为数据集中的日期和时间格式导致它出现了一些奇怪的错误。。。