鱼C论坛

 找回密码
 立即注册
查看: 1016|回复: 2

明明定义了属性,为什么执行的时候仍然说没有?

[复制链接]
发表于 2019-3-20 16:41:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
给数据库插入数据,在 init 里明明 定义了 conn 和 cursor ,但是执行程序还是报错,报DB 里面没有属性conn 或者是 corsor。
不知道是哪里的问题。。。
数据库我单独用简单的测试方法试了,是可以连接上的。

  1. class DB:
  2.     def __init__self(self):
  3.         try:
  4.             # =====连接数据库
  5.             self.conn = pymysql.connect(host=db_host, port=db_port, user=db_username, password=db_password, db=db_name,
  6.                                 charset='utf-8',
  7.                                 cursorclass=pymysql.cursors.DictCursor)
  8.             self.cursor = self.conn.cursor()

  9.         except OperationalError as e:
  10.             print('mysql Error %d: %s' % (e.args[0], e.args[1]))

  11.     # 清除表数据
  12.     def clear(self, table_name):
  13.         real_sql = 'delete from' + table_name + ';'
  14.         with self.conn.cursor() as cursor:
  15.             cursor.execute('SET FOREIGN_KEY_CHECKS = 0;')
  16.             cursor.excute(real_sql)
  17.         self.conn.commit()

  18.     # 插入表数据
  19.     def insert(self, table_name, table_data):
  20.         for key in table_data:
  21.             table_data[key] = "'"+str(table_data[key])+"'"
  22.         key = ','.join(table_data.keys())
  23.         value = ','.join(table_data.values())
  24.         real_sql = 'INSERT INTO' + table_name + '('+key+') VALUES('+value+')'

  25.         #print(real_sql)

  26.         #with self.conn.cursor() as cursor:

  27.         self.cursor.execute(real_sql)
  28.         self.conn.commit()

  29.     # 关闭数据库连接
  30.     def close(self):
  31.         self.conn.close()


  32. if __name__ == '__main__':
  33.     db = DB()
  34.     table_name = 'f_course'
  35.     data = {'course_name': 'test课程一',
  36.             'course_price': 9900,
  37.             'on_sale': 0,
  38.             'course_state': 1,
  39.             'free': 0,
  40.             'state': 0,
  41.             'teacher_id': 1,
  42.             'create_time': '2019-02-10 00:25:42'
  43.             }
  44.     # db.clear(table_name)
  45.     db.insert(table_name, data)
  46.     db.close()
复制代码




============
可以连接数据的代码
  1. import pymysql

  2. conn = pymysql.Connect(host='121.42.203.***', port=3306, user='admin', passwd='6216', db='test')
  3. cur = conn.cursor()
  4. cur.execute("select version()")
  5. sql2 = 'SELECT * FROM f_course'
  6. cur.execute(sql2)
  7. for i in cur:
  8.     print(i)
  9. cur.close()
  10. conn.close()
复制代码
sql.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-3-20 16:49:58 | 显示全部楼层
补充读取数据库配置信息的代码

  1. from pymysql.err import OperationalError
  2. import pymysql
  3. import os
  4. import configparser as cparser

  5. # =======读取db_config.ini 文件设置===========

  6. #获取当前运行脚本的绝对路径(去掉最后一个路径)
  7. #base_dir = str(os.path.dirname(os.path.dirname(__file__)))
  8. #base_dir = base_dir.replace('\\', '/')
  9. #file_path = base_dir + "/db_config.ini"


  10. cf = cparser.ConfigParser()
  11. # cf.read(file_path)

  12. # ==========直接读取db_config.ini,因为在同一个文件夹下==========
  13. cf.read('db_config.ini')

  14. db_host = cf.get('db_dev', 'db_host')
  15. db_port = cf.get('db_dev', 'db_port')
  16. db_name = cf.get('db_dev', 'db_name')
  17. db_username = cf.get('db_dev', 'db_username')
  18. db_password = cf.get('db_dev', 'db_password')
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-20 16:50:32 | 显示全部楼层
找到原因了,还是因为数据库没有连接上,不明白,为什么从配置文件读取相关配置信息再连接数据库,就无法连接数据库呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-14 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表