记录python 调用pymysql的一些坑

记录python 调用pymysql的一些坑

使用pymysql连接数据库 报错 大致意思是说pymysql 里面的_auth.py文件 里面的byte2int 没有定义,还有一些其他报错,都是引用方面的,我把引用都贴出来,记录一下

from ._compat import text_type, PY2
from .constants import CLIENT
from .err import OperationalError

from .util import byte2int,int2byte

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding



from functools import partial
import hashlib
import io
import struct
#创建数据库连接
db = pymysql.connect("地址", '用户名', '密码', '连接数据库名称')
cursor = db.cursor()
#创建表
tablesql = """ CREATE TABLE `表名称` (                    
                    DTIME datetime NOT NULL,
                    DATE_ONE float NOT NULL,                    
                    ) ENGINE=MyISAM DEFAULT CHARSET=utf8
                    """
    cursor.execute(tablesql)

#查询表的所有数据
sql = "SELECT * FROM {} ".format(表名称)
    cursor.execute(sql)
    res = []
    for x in cursor.fetchall():
        res.append(x)

#按照时间段查询数据
sql = """SELECT * FROM {0} WHERE DTIME BETWEEN '{1}' AND '{2}' """.format(table, starttime, endtime)
cursor.execute(sql)


#添加数据
sql = "INSERT INTO EMPLOYEE(DTIME, DATE_ONE)VALUES (%s, %s )" % ('2018-12-4 15:00:00', '20.35')
cursor.execute(insertsql)
db.commit()

重点来了,上面的代码都没有问题,在添加数据这里居然报错了,我这里居然报错了哦,太坑了。折腾了一天,找到解决办法,居然是要给变量上面添加引号,让其编程字符串,不知道是不是和mysql版本有关系。下面是正确版本。

insertsql = """INSERT INTO atest_user (name, password) VALUES ("%s", "%s")""" % (变量1, 变量2)

在第二天又发现可以直接用execute直接进行拼接,下面举个例子

#输入sql语句进行插入数据
def mysql_insert(sql,date):	
	db, cursor = mysql_creat_connect()
	cursor.execute(sql, date)
	db.commit()
	mysql_close_connect(db, cursor)

number = round(random.uniform(0, 1000), 5)
dtime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
insertsql = """ INSERT INTO atest_doubledate (DTIME,DATE_ONE) VALUES (%s,%s)"""
mysql_insert_sql(insertsql, [dtime, number])

#ok,完全没有问题。

我的代码把sql语句改成这样就完全没有问题可以开心的执行添加数据了。

随笔记录,自己工作中碰到的问题,以及解决办法,大神勿喷。

猜你喜欢

转载自blog.csdn.net/linxue110/article/details/84793837