Python查询MySQL数据库并将查询结果输出到csv文件

1. 安装Python链接MySQL插件。

$ pip3 install PyMySQL

2. 完整代码如下:

import os
import pymysql

sku = []

#定义递归函数findPNG,寻找当前目录下所有png类型的文件
def findPNG(sku,dir):
    for ffName in os.listdir(dir):
        if os.path.isfile(dir+"/"+ffName):
            if ffName.split(".")[1] == "png":
                sku.append(ffName.split(".")[0]);
        elif os.path.isdir(dir+"/"+ffName):
            findPNG(sku,dir+"/"+ffName)
findPNG(sku,"./")

h = open("./ProductsInformation.csv","a")
db = pymysql.connect("地址","用户","密码","数据库名" )
cursor = db.cursor()

for s in sku:
    SQL = '''SELECT t1.model,t2.name,t2.tag
             FROM `product` AS t1, `product_description` AS t2
             WHERE t1.product_id = t2.product_id AND t1.model ="{}"'''.format(s)
    cursor.execute(SQL)
    data = cursor.fetchone()
    if data:
        for d in data:
            h.write('"'+d+'",')
        h.write('\n')
    else:
        print(s)

h.close()
db.close()

Python安装时勾选添加PATH环境变量,安装完却无法在cmd使用python命令的解决方法

问题描述

在安装Python的时候,会有个添加环境变量的选项,我们在安装Python的时候一般都会勾选,这样就可以省去手动添加环境变量的麻烦。

然而,安装了多次Python的我却在一次在Windows2008服务器上安装Python的时候遇到了麻烦。同样的安装流程,安装后就是无法在cmd中使用python命令。

查看了下环境变量,python的两个路径也加到PATH环境变量中去了。那为啥还是不能使用呢?

原因

还好我比较幸运,一下子发现了问题。
原来,在安装Python之前,服务器中已经有了Path环境变量,且里面已经有了相关的内容。然后,Python不知怎么搞的又建了一个环境变量名为全大写的PATH。
然而我们都知道,Windows中是不区分大小写的,也就是说服务器中已经存在的Path和新建的PATH产生了冲突。

解决

找到了原因,解决方法就很简单了。将新建的PATH变量中的内容加到之前已经存在的Path变量的末尾就好了。

【Python每日一练】JSON和CSV处理练习

JSON练习

3.1 导入population.json数据,并格式化输出中国China的人口数据。

下载:population.json

CSV联系

3.2 使用with导入population.csv数据,并输出中国China的人口数据。

下载:population.csv

答案

3.1

import json
fileURL = "population.json"
r = open(fileURL,"r")
popData = json.load(r)
for country in popData:
    if country["Country"] == "China":
        country = json.dumps(country,indent=1)
        print(country)

3.2

import csv
fileURL = "population.csv"
with open(fileURL) as f:
    f_csv = csv.reader(f)
    for row in f_csv:
        if row[0] == "China":
            print(row)

【Python每日一练】文件IO和函数

Python文件IO练习

2.1 创建文件夹和文件

创建文件夹fileset,并在fileset里面生成20个.txt文件。
Txt文件名为1-20.txt,txt内的内容为当天时间+文件名。

2.2 文件IO

将上面20个文件的内容合并到一个新文件all.txt中。
并将all.txt中的内容逐行输出。

2.3 文件删除和函数

定义一个deleteDir函数,删除上面的fileset文件夹,连同里面的所有文件。

答案

2.1

import os
import datetime
folderUrl = "fileset"
if not os.path.exists(folderUrl):
    os.mkdir(folderUrl)
for i in range(1,21):
    f = open("fileset\\"+str(i)+".txt","w")
    f.write(str(datetime.datetime.now())+" "+str(i)+".txt")
    f.close()

2.2

import os
folderUrl = "fileset"
fileSet = os.listdir(folderUrl)
w = open("all.txt","w")
for fileName in fileSet:
    r = open(folderUrl + "\\" + fileName, "r")
    w.write(r.read()+"\r\n")
    r.close()
w.close()
r = open("all.txt","r")
for line in r:
    print(line)
r.close()

2.3

import os
def deleteDir(folderURL):
    for fileName in os.listdir(folderURL):
        os.remove(folderURL+"\\"+fileName)
    os.rmdir(folderURL)

deleteDir("fileset")

【Python每日一练】基本语法练习

为啥要练?

作为一名coder,应该尽可能多的了解各种主流编程语言和技术体系。然而,无论这个coder多牛,其在实际工作中常用的技术和语言也是有限的。然而,任何一门语言和技术,无论你曾经精通到何种程度,放下几个月不用,再拿起来也会生疏。
所以呢,对于自己喜欢的语言和技术,我喜欢总结一些简单的练习题,有空就简单的联系一下,这样可以保持对这门语言或技术的热度。

【Python基本语法】练习题

1.1 创建一个拥有20个元素的随机列表并输出。

随机列表的元素为1-1000间的整数。
随机列表输出时采用升序右对齐输出。

1.2 创建一个拥有20个元素的随机元祖并输出。

随机元祖的元素为1-1000位随机数字+1随机英文字母组合。
随机元祖输出时升序排序并采用右对齐输出。

1.3 创建一个拥有20个键值对的随机字典并输出。

随机字典的键为1-1000的随机整数,随机字典的值为4位随机英文字母组合。
随机字典键输出时按键升序排序,并采用左对齐方式。

1.4 创建两个随机集合,并计算输出。

创建一个拥有50个元素的随机集合A。随机集合元素内容为1-100的随机整数。
创建一个拥有50个元素的随机集合B。随机集合元素内容为1-100的随机整数。

计算并输出:
集合A
集合B
集合A-集合B
集合B-集合A
集合A+集合B

答案:

1.1

import random
listVar = []
for i in range(0,20):
    listVar.append(random.randint(1,1000))
listVar.sort()
for i in range(0,20):
    print((str(listVar[i])).rjust(4))

1.2

import random
import string
varList = []
for i in range(0,20):
    randomChar = string.ascii_lowercase
    varList.append(str(random.randrange(1,1000)) + random.choice(randomChar))
varList.sort()
varTuple = tuple(varList)
for i in range(1,20):
    print(varTuple[i].rjust(5))

1.3

import random
import string
randomDict = {}
while 1==1:
    key = random.randint(1,1000)
    value = random.choices(string.ascii_uppercase,k=4)
    randomDict[key] = "".join(value)
    if len(randomDict) == 20:
        break
for key in sorted(randomDict):
    print(str(key).rjust(4) + "->" + randomDict[key])

1.4

import random
aSet = set()
bSet = set()
while 1==1:
    aSet.add(random.randint(1,100))
    if len(aSet) == 50:
        break
while 1==1:
    bSet.add(random.randint(1,100))
    if len(bSet) == 50:
        break
print(aSet)
print(bSet)
print(aSet-bSet)
print(bSet-aSet)
print(aSet.union(bSet))