美文网首页
python操作pymysql总结

python操作pymysql总结

作者: 饮冰十年_难凉热血 | 来源:发表于2019-08-19 23:03 被阅读0次

1. 链接数据库

class Mysql:
    def __init__(self, **kwargs):
        self.kwargs = kwargs or cf.MYSQL_LOCAL_IP

        self.db = pymysql.connect(
            host=self.kwargs['HOST'],
            port=self.kwargs['PORT'],
            user=self.kwargs['USER'],
            password=self.kwargs['PASSWORD'],
            database=self.kwargs['DATABASE'],
        )
        self.cursor = self.db.cursor()

dbcursor 是需要用到的两个实例, 对 cursor 的操作有执行 sql 语句 execute() , 得到数据 fetch()fetchall(), fetch() 只返回一条数据, fetchall() 返回所有数据, 返回的格式均是 tuple 类型, 如: ((data1), (data2)), db 的操作目前我用到的有获取 cursor 和 关闭数据库链接 db.close().


2. 执行单条 sql 语句

self.cursor.execute('SELECT * From `account`')
data = self.cursor.fetchall()  # ((name, pwd, index),(name, pwd, index))

3. 执行多条 sql 语句并执行事务

rows = ((1, 2, 3), (2, 3, 4))
sql_insert = '''INSERT INTO info (key_id, apply_id, update_time)
                VALUES (%s, %s, %s)
                ON DUPLICATE KEY UPDATE
                update_time=values(update_time);'''
try:
    mysql.cursor.executemany(sql, rows)
except Exception as e:
    print(e)
    mysql.db.rollback()
else:
    mysql.db.commit()

rows 应该是 list 或者 tuple , ON DUPLICATE KEY UPDATE 表示如果存在这条数据(通过唯一索引判断是否重复)则更新 update_time.


4. IN 语句的使用

sql = '''SELECT * From company
         WHERE company_id IN (%s);''' % ','.join(['%s'] * len(company_id_))

mysql.cursor.execute(sql, company_id_)
results = mysql.cursor.fetchall()

我试了好久才发现要这么写 IN 语句, 虽然 mysql 里面的 IN 语句挺简单的.

相关文章

网友评论

      本文标题:python操作pymysql总结

      本文链接:https://www.haomeiwen.com/subject/pcsysctx.html