python调用mysql数据库sql语句过长有问题吗_Python 连接Mysql数据库执行sql语句

#-*- coding: utf-8 -*-

'''

======================================================================

描述:python打开Mysql数据库连接,并查询遍历SQL执行结果,

相关日志信息打印控制太并写出到指定目录下的日志文件。

作者:xiawp

日期:2019/1/25 0:25

收获:python访问Mysql数据库,3.0+版本需要 pip3安装pyMysql客户端模块。

通过pymysql.connect()方法连接数据库获取数据库对象;

通过db对象的cursor()方法创建一个游标;

通过游标的execute()方法执行sql;

通过游标的fetchone()方法获取首行数据,如果为空则结果为None

通过游标的fetchone()方法获取查询的所有结果(List类型)

======================================================================

'''

import os

import time

import pymysql

rootdir = "D:/test"

#执行SQL

def executeSQL(sql):

dataList = []

# 打开数据库连接

db = pymysql.connect(host="localhost",

user="test",

password="1234",

port=3306,

database="testdb",

charset="utf8")

# 使用cursor() 方法创建一个游标对象 cursor

cursor = db.cursor()

try:

printLog("执行SQL:" + sql)

# 使用execute() 方法执行SQL

cursor.execute(sql)

except Exception as e:

printLog("SQL执行异常:" + sql)

printLog(str(e))

else:

# 使用fetchall() 方法获取全部查询的结果

dataList = cursor.fetchall()

#dataList = cursor.fetchone() #只取首行单行数据

finally:

# 关闭数据库

cursor.close()

db.close()

return dataList

# end def

# 写出日志信息

def printLog (logMsg):

# 定义日志文件目录

logPath = os.path.join(rootdir , "logs")

if not os.path.exists(logPath):

os.makedirs(logPath)

# 定义日志文件名称

now = time.localtime(time.time())

logName = "".join(["log_", time.strftime("%Y%m%d", now), ".txt"])

logPath = os.path.join(logPath, logName)

formatDate = time.strftime("%Y-%m-%d %H:%M:%S", now)

messge = "".join(["== log message ", "[",formatDate,"]", " : \t", logMsg])

print (messge)

#追加的方式写出内容到文件

logfile = open(logPath,'a')

logfile.writelines(messge)

logfile.writelines("\n")

logfile.close

#end def

# 执行SQL查询并遍历打印查询结果

dataList = executeSQL("select * from city")

for i in range(len(dataList)):

print (dataList[i])

'''

EditPlus python37:

------------------------------------------------------------------------------------------------------------------------

---------- EditPlus Python37 ----------

== log message [2019-01-25 00:40:44] : 执行SQL:select * from city

(1, '上海', 3)

(1, '乌鲁木齐市', 32)

(1, '兰州市', 21)

(1, '北京市', 1)

(1, '南京市', 11)

(1, '南宁市', 29)

(1, '南昌市', 15)

(1, '台北市', 7)

(1, '合肥市', 13)

(1, '呼和浩特市', 33)

(1, '哈尔滨市', 10)

(1, '天津市', 2)

(1, '太原市', 6)

(1, '广州市', 20)

(1, '成都市', 22)

(1, '拉萨市', 30)

(1, '昆明市', 26)

(1, '杭州市', 12)

(1, '武汉市', 18)

(1, '沈阳市', 8)

(1, '济南市', 16)

(1, '海口市', 25)

(1, '澳门特别行政区', 34)

(1, '石家庄市', 5)

(1, '福州市', 14)

(1, '西宁市', 27)

(1, '西安市', 28)

(1, '贵阳市', 24)

(1, '郑州市', 17)

(1, '重庆市', 4)

(1, '银川市', 31)

(1, '长春市', 9)

(1, '长沙市', 19)

(1, '香港特别行政区', 35)

输出完成 (耗时 0 秒) - 正常终止

------------------------------------------------------------------------------------------------------------------------

'''

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值