gpt4 book ai didi

python - 使用Python从MySQL数据库中提取两个日期时间之间的数据

转载 作者:行者123 更新时间:2023-11-29 21:43:18 28 4
gpt4 key购买 nike

我试图弄清楚如何从具有名为“sent_time”的列且日期时间介于两个日期时间之间的表中提取数据。正如您在代码中看到的,格式为 'YYYY-dd-MM HH:mm:ss' 。根据我如何更改代码,我不断收到不同的错误。你能告诉我哪里出错了吗?

我想向您提供我拥有的所有其他文件的所有信息以及我正在拍摄的内容,看看您是否可以复制并实际让它工作,只是为了看看它是否不仅仅是我的系统或我拥有的某些配置..

我有一个包含一个表的数据库。我们将其称为“table1”。该表按如下列进行分割:

发送时间 | Delivered_time |id1_active |id2_active |id3_active |id1_inactive |id2_inactive |id3_inactive |location_active |location_inactive …..`还有更多

假设有两个或多个客户相互运送 cargo 。每个客户都有三个 id#。

我创建了一个“config.ini”文件来让我的生活更轻松

[mysql]
host = localhost
database = db_name
user = root
password = blahblah

我创建了一个“python_mysql_dbconfig.py”

from configparser import ConfigParser

def read_db_config(filename=’config.ini’, section=’mysql’):
“”” Read database configuration file and return a dictionary object
:param filename: name of the configuration file
:param section: section of database configuration
:return: a dictionary of database parameters
“””
# create parser and read ini configuration file
parser = ConfigParser()
parser.read(filename)

# get section, default to mysql
db = {}
if parser.has_section(section):
items = parser.items(section)
for item in items:
db[item[0]] = item[1]
else:
raise Exception(‘{0} not found in the {1} file’.format(section, filename))

return db

现在这是我一直在编写的代码,该代码应该提取两个日期时间之间的行。但我不断收到此错误:

   **Traceback (most recent call last):
File "C:\Python34\timerange.py", line 33, in <module>
dt_start = datetime.strptime(userIn,timeShape)
TypeError: must be str, not tuple**

你能看一下这个并告诉我我做错了什么吗?

时间范围.py

# Establish a MySQL connection
from mysql.connector import MySQLConnection, Error
from python_mysql_dbconfig import read_db_config
db_config = read_db_config()
conn = MySQLConnection(**db_config)
import xlsxwriter
from xlsxwriter.workbook import Workbook
import datetime
from datetime import datetime
cursor = conn.cursor()

#creates the workbook
workbook = xlsxwriter.Workbook('imhere.xlsx')
worksheet = workbook.add_worksheet()

#formatting definitions
bold = workbook.add_format({'bold': True})
date_format = workbook.add_format({'num_format': 'yyyy-mm-dd hh:mm:ss'})
timeShape = '%Y-%m-%d %H:%M:%S'



#actual query
userIn = [input('start date:'),0]
userEnd = [input('end date:'),1]



query = (
"SELECT sent_time, delivered_time, customer_name, id1_active, id2_active, id3_active, id1_inactive, id2_inactive, id3_inactive, location_active, location_inactive FROM table1 "
"WHERE sent_time BETWEEN %s AND %s"
)
dt_start = datetime.strptime(userIn,timeShape)
dt_end = datetime.strptime(userEnd, timeShape)
# Execute sql Query
cursor.execute(query, (dt_start, dt_end))
result = cursor.fetchall()


#sets up the header row
worksheet.write('A1','sent_time',bold)
worksheet.write('B1', 'delivered_time',bold)
worksheet.write('C1', 'customer_name',bold)
worksheet.write('D1', 'id1_active',bold)
worksheet.write('E1', 'id2_active',bold)
worksheet.write('F1', 'id3_active',bold)
worksheet.write('G1', 'id1_inactive',bold)
worksheet.write('H1', 'id2_inactive',bold)
worksheet.write('I1', 'id3_inactive',bold)
worksheet.write('J1', 'location_active',bold)
worksheet.write('K1', 'location_inactive',bold)
worksheet.autofilter('A1:K1')



print("sent_time", "delivered_time", "customer_name", "id1_active", "id2_active", "id3_active", "id1_inactive", "id2_inactive", "id3_inactive", "location_active", "location_inactive")
for row in result:
print(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9],row[10])

# Create a For loop to iterate through each row in the XLS file, starting at row 2 to skip the headers
for r, row in enumerate(result, start=1): #where you want to start printing results inside workbook
for c, col in enumerate(row):
worksheet.write_datetime(r,0,row[0], date_format)
worksheet.write_datetime(r,1, row[1], date_format)
worksheet.write(r,2, row[2])
worksheet.write(r,3, row[3])
worksheet.write(r,4, row[4])
worksheet.write(r,5, row[5])
worksheet.write(r,6, row[6])
worksheet.write(r,7, row[7])
worksheet.write(r,8, row[8])
worksheet.write(r,9, row[9])
worksheet.write(r,10, row[10])




#close out everything and save
cursor.close()
workbook.close()
conn.close()

#print number of rows and bye-bye message
print ("- - - - - - - - - - - - -")
rows = len(result)
print ("I just imported "+ str(rows) + " rows from MySQL!")
print ("")
print ("Good to Go!!!")
print ("")

最佳答案

我在输入中使用了 dateutil.parser.parse 并能够得到一些结果...我有一个新错误,但我将在现在的问题上发布它。感谢您的帮助。

关于python - 使用Python从MySQL数据库中提取两个日期时间之间的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310637/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com