8000 cursor.mogrify Decimal type processing · Issue #818 · PyMySQL/PyMySQL · GitHub
[go: up one dir, main page]

Skip to conte 8000 nt
cursor.mogrify Decimal type processing #818
Closed
@wataameto

Description

@wataameto

sample code

#!/usr/bin/env python
from __future__ import print_function

import pymysql
from decimal import Decimal

conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='')

cur = conn.cursor()
cur.execute('CREATE DATABASE IF NOT EXISTS testdb ')
cur.execute('DROP TABLE IF EXISTS testdb.testtable')
cur.execute('CREATE TABLE testdb.testtable(num1 decimal(40, 25))')

sql = cur.mogrify('INSERT INTO testdb.testtable VALUES(%s)', Decimal('0.0000001111222233388882222'))
print(sql)
cur.execute(sql)

cur.execute("SELECT * FROM testdb.testtable")
for row in cur:
    print(row)

cur.close()
conn.close()

result

INSERT INTO testdb.testtable VALUES(1.111222233388882222E-7)
(Decimal('1.111222233388882200E-7'),)

Desired result

INSERT INTO testdb.testtable VALUES('1.111222233388882222E-7')
(Decimal('1.111222233388882222E-7'),)

or

INSERT INTO testdb.testtable VALUES(0.0000001111222233388882222)
(Decimal('1.111222233388882222E-7'),)

modify converters.py

def escape_object(value, mapping=None):
    return "'" + str(value) + "'"

or

def escape_object(value, mapping=None):
	return '{:f}'.format(value)

How is this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0