python连接并使用数据库mysql

# !/usr/bin/env python
# _*_ coding:UTF-8 _*_
"""
数据库连接封装
"""
import pymysql


def Pymysql_connection():
    conn = pymysql.connect(
        host='192.168.8.153',
        port=3306,
        user='root',
        password='Commiam',
        db='ai',
        charset='utf8')
    cur = conn.cursor(pymysql.cursors.DictCursor)  # 获得游标对象,pymysql.cursors.DictCursor 把获取到的数据转化为字典格式
    #print(conn,'...',cur)

    return conn,cur

if __name__ == '__main__':
    Pymysql_connection()

1、cursor = db.cursor() #创建一个指针,之后基本所有的操作都是使用指针来实现

在默认情况下cursor方法返回的是BaseCursor类型对象,BaseCursor类型对象在执行查询后每条记录的结果以列表(list)表示。
如果要返回字典(dict)表示的记录,就要设置cursor参数为pymysql.cursors.DictCursor类。
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)

2、cursor.execute('show databases;') #执行SQL语句

当使用字典、列表和元组等不同的数据类型向cursor.execute()方法传递值时,可以通过占位符 %s 来表示参数的位置,并将具体的值作为第二个参数传递给cursor.execute()方法

使用字典传递参数:

params_dict = {'name': 'John', 'age': 25}
query = "SELECT * FROM users WHERE name = %(name)s AND age = %(age)s"
cursor.execute(query, params_dict)


使用列表传递参数:

params_list = ['John', 25]
query = "SELECT * FROM users WHERE name = %s AND age = %s"
cursor.execute(query, params_list)


使用元组传递参数:

params_tuple = ('John', 25)
query = "SELECT * FROM users WHERE name = %s AND age = %s"
cursor.execute(query, params_tuple)
        在这些示例中,%(name)s 和 %s 是占位符,表示参数的位置。在执行cursor.execute()方法时,第一个参数是查询语句,第二个参数是具体的参数值。

        使用字典传递参数时,可以通过键名来引用参数值,而使用列表和元组传递参数时,参数值的顺序需要与占位符的顺序一致。

3、db.commit() #将修改提交到数据库——如果连接时参数autocommit设置为false要加上
4、cursor.fetchall() #获取上一条SQL语句的执行结果,如查询结果等
5、cursor.fetchone() #获取执行结果的一行

fetchone()函数它的返回值是单个的元组,也就是一行记录,如果没有结果,那就会返回null

fetchall()函数,它的返回值是多个元组,即返回多个行记录,如果没有结果,返回的是()

6、db.close() #关闭数据库

from lib.anesthesiaStation.pymsql_connect import Pymysql_connection

class Cockpit_1():
   
    @staticmethod
    def get_sql_roomnum():
        """
        数据库获取xxx总数
        :return:
        """
        conn, cur = Pymysql_connection()
        try:
            sql = '''select * from dat_room dr 
                        left join uaa_department ud on dr.departmentid = ud.id
                        where dr.status =1
                        and dr.`type` in(1,4,5,6)
                        and ud.status =1'''

            cur.execute(sql)
            results = cur.fetchall()
            roomnum = len(results)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值