我正在编写一个脚本来查询mariadb数据库,该数据库将返回如下('101', datetime.datetime(2023, 1, 27, 14, 8, 39), datetime.datetime(2023, 1, 27, 14, 8, 39)
所示的查询输出,而不是如下('101', '2023-01-27 14:08:39.399', 0, '2023-01-27 14:08:39.399')
所示的输出
try:
conn = mariadb.connect()
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
# Get Cursor
cur = conn.cursor()
cur.execute("SELECT * FROM <table>")
myresult = cur.fetchall()
print(myresult)
cur.close()
我在使用pyodbc时遇到过类似的问题,所以我使用了我的自定义输出转换器,但是我没有找到任何适合这个库的输出转换器,下面是我在pyodbc中的操作
`
# function to convert datetime.date(2022, 10, 12) with data type date to string
def convert_date_to_string(raw_bytes):
tup = struct.unpack('3h', raw_bytes)
return datetime.date(tup[0], tup[1], tup[2]).strftime('%Y-%m-%d')
conn.add_output_converter(po.SQL_TYPE_DATE, convert_date_to_string)
请为maraidb连接器建议一个类似的方法,因为我不想为我做的每个查询添加解析器,相反,我想做一些全局性的事情,就像上面提到的pyodbc一样。
1条答案
按热度按时间1tu0hz3e1#
数据库驱动程序中的默认行为是将数据库值转换为相应的Python数据类型。
如果需要将其转换为另一个值,可以使用
CAST
函数在SQL级别执行此操作或者通过使用转换器: