• Matthew
    2023-01-27 来自江苏
    有个问题希望老师帮解答下: pymysql 是一个包名,但是如下的这条语句调用 connect 函数时,使用的是 “包名.方法名”,中间没有模块名,这个怎么理解? # 连接数据库 connection = pymysql.connect(host='localhost', user='root', password='admin123', database='db', cursorclass=pymysql.cursors.DictCursor)

    作者回复: 我们先明确定义以下几个概念,再来回答你的问题: 1 库、包、模块 库: 泛指通过import 和 from import 方式导入的 包和模块,python自带的是标准库,不是python自带的是第三方库 模块: .py 扩展名的文件,文件中的类、函数可以在当前文件调用 包: 一个文件夹,早期python规范要求文件夹中必须包含__init__.py文件,文件中的 .py里面 的 类、函数 可以被当前文件调用 2 回到问题 pymysql 是个文件夹, 所以它是包名, 包pymysql文件夹下有__init__.py文件,在导入包的时候,会自动加载.py 文件, 因此没有导入中间的模块名,直接就能使用里面的类和函数了 更详细的信息你可以参考python文件夹下的 site-packages文件夹,如果是windows它的路径应该为C:\Python文件夹\Lib\site-packages\pymysql

    
    
  • Greenery
    2023-07-26 来自新加坡
    # %% import json import pymysql.cursors connection = pymysql.connect( host='localhost', user='root', password='root', database='db', cursorclass=pymysql.cursors.DictCursor ) # %% with connection: with connection.cursor() as cursor: sql = "INSERT INTO `weather1` (`city`,`date`,`temp`) VALUES (%s,%s,%s)" cursor.execute(sql, ('ningbo', '20230709', '29')) cursor.execute(sql, ('ningbo', '20230710', '31')) cursor.execute(sql, ('ningbo', '20230711', '32')) cursor.execute(sql, ('ningbo', '20230712', '30')) cursor.execute(sql, ('hangzhou', '20230709', '35')) cursor.execute(sql, ('hangzhou', '20230710', '36')) cursor.execute(sql, ('hangzhou', '20230711', '37')) connection.commit() with connection.cursor() as cursor: sql = 'SELECT `city`,`date`,`temp` FROM `weather1`' cursor.execute(sql) result = cursor.fetchall() city_to_date_temp = {} for d in result: if d['city'] in city_to_date_temp: city_to_date_temp[d['city']][d['date']] = d['temp'] else: city_to_date_temp[d['city']] = {} city_to_date_temp[d['city']][d['date']] = d['temp'] with connection.cursor() as cursor: sql = 'INSERT INTO `weather2` (`city`,`date_temp`) VALUES (%s,%s)' for city, date_temp in city_to_date_temp.items(): print(city, json.dumps(date_temp)) cursor.execute(sql, (city, json.dumps(date_temp))) connection.commit()
    展开
    
    
  • Cy23
    2023-01-31 来自辽宁
    import pymysql.cursors from collections import UserDict class MyDict(UserDict): def __setitem__(self, key, value) -> None: if key in self.data.keys(): self.data[key].update(value) else: self.data[key] = value myDict = MyDict(); conn = pymysql.connect(host='localhost', user='root', password='', database='pydb', cursorclass=pymysql.cursors.DictCursor) with conn: with conn.cursor() as cursor: sql = "SELECT * FROM `weather`" cursor.execute(sql) result = cursor.fetchall() for res in result: myDict[res["city"]] = { res["date"] : res["temp"] } print(myDict) for myCity,myDateTemp in myDict.items(): sql = "INSERT INTO `weather_new` (`city`, `date_temp`) VALUES (%s, %s)" cursor.execute(sql, (myCity, str(myDateTemp))) # conn 不能自动提交数据,必须手动提交 conn.commit()
    展开
    
    
  • Matthew
    2023-01-27 来自江苏
    # 函数:将关于 date 和 temp 的【字典】结果,保存到数据库 def save_to_newtb(city, result_dict): conn = pymysql.connect(host='localhost', user='root', password='admin123', database='db', cursorclass=pymysql.cursors.DictCursor) with conn: with conn.cursor() as cursor: sql = "INSERT INTO `weather_clob` (`city`, `date_temp`) VALUES (%s, %s)" cursor.execute(sql, (city, str(result_dict))) # conn 不能自动提交数据,必须手动提交 conn.commit() # 主函数: def main(): city_list = city_list = find_all_cities() for i in city_list: city_temp = i["city"] result_list = find_clob_by_city(city_temp) result_dict = transform_list_to_dict(result_list) save_to_newtb(city_temp, result_dict) # 测试 if __name__ == '__main__': main()
    展开
    
    
  • Matthew
    2023-01-27 来自江苏
    import pymysql.cursors # 函数:找到 weather 表中所有的 city def find_all_cities(): conn = pymysql.connect(host='localhost', user='root', password='admin123', database='db', cursorclass=pymysql.cursors.DictCursor) with conn: with conn.cursor() as cursor: sql = "SELECT distinct `city` FROM `weather`" cursor.execute(sql) result = cursor.fetchall() return result # 函数:根据 city_name, 从 weather 表中找到对应的 date 和 temp,并返回结果列表 def find_clob_by_city(city_name): conn = pymysql.connect(host='localhost', user='root', password='admin123', database='db', cursorclass=pymysql.cursors.DictCursor) with conn: with conn.cursor() as cursor: sql = "SELECT `date`, `temp` FROM `weather` WHERE `city`=%s" cursor.execute(sql, (city_name)) result = cursor.fetchall() return result # 函数:将关于 date 和 temp 的【列表】结果,转化成【字典】结果 def transform_list_to_dict(result_list): result_dict = {} for i in result_list: data_key = i["date"] data_value = int(i["temp"]) result_dict[data_key] = data_value return result_dict
    展开
    
    