python - 将数据从 MSSQL 导出到 Excel 并将日期时间转换为日期
问题描述
我构建了一个查询以从 MSSQL 数据库中导出表的两列。一列具有类型datetime
。我想在将其放入date
Excel 文件之前将其转换为。
当我想将它导入 MySQL 数据库时,我得到了错误
警告:(1265,“第 1 行的列 'dLieferdatum' 的数据被截断”)
并且datetime
不会导入到 MySQL 列中。但是当我手动将其更改date
为 Excel 文件时,它确实会导入。
我的代码:
import pyodbc
import pandas as pd
import datetime
import MySQLdb
import xlrd
import pymysql
import mysql.connector
from mysql.connector import Error
from mysql.connector import errorcode
from datetime import datetime
conn = pyodbc.connect('Driver={SQL Server};'
'Server=DESKTOP-XXXX\DEVELOPMENT;'
'Database=XXXXXXXXXX;'
'Trusted_Connection=yes;')
cursor = conn.cursor()
cursor.execute('SELECT cArtNr, dLieferdatum FROM XXXXXXXXXX.dbo.tLieferantenBestellungPos WHERE dLieferdatum > CURRENT_TIMESTAMP ')
for row in cursor:
print(row.strftime("%Y-%m-%d"))
depts = ['cArtNr','dLieferdatum']
depts_query_string = "('{query_vals}')".format(query_vals="','".join(depts))
query = """
SELECT cArtNr, dLieferdatum
FROM XXXXXXXXXX.dbo.tLieferantenBestellungPos
WHERE dLieferdatum > CURRENT_TIMESTAMP
""".format(query_vals=depts_query_string)
target = r'O:\\Example'
P_data = pd.read_sql(query, conn)
P_data.to_excel('C:\Datengrab\Python\Export.xlsx')
book = xlrd.open_workbook('C:\Datengrab\Python\Export.xlsx')
sheet = book.sheet_by_index(0)
# MySQL Import Part
# Connect to the database
connection = pymysql.connect(host='XXXXXX.XXXXXXX.XXXXXXX',
user='XXXXXXXX',
password='XXXXXXXXX',
db='XXXXXXX')
cursor = connection.cursor()
query = """INSERT INTO XXXXXXXXX.jll99_deliverytime_import (cArtNr, dLieferdatum) VALUES (%s, %s)"""
for r in range(1, sheet.nrows):
cArtNr = sheet.cell(r,1).value
dLieferdatum = sheet.cell(r,2).value
values = (cArtNr, dLieferdatum)
cursor.execute(query, values)
connection.commit()
cursor.close()
解决方案
推荐阅读
- forms - EntityType 的 Symfony 禁用选项
- javascript - 如何使用具有异步/等待功能的守夜人?
- javascript - React Router 在路由到新组件后仍然呈现上一页
- dart - BlocBuilder 的构建功能不会重新加载
- r - 如何将聊天数据向量转换为数据框或矩阵
- python - 在左右(顶部和底部)启用散景 y (x) 轴刻度
- python - 在 Python 中读取 CSV 时出现 ValueError
- c# - 并发发送多个请求时等待 REST 调用完成的死锁问题
- c++ - 如何定义一些可以从(+)运算符的运算符重载范围内访问的函数?
- shell - 为什么使用“./”和“bash”运行脚本结果不同?