# !/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)