Python 2.7 MySQLdb将从数据库读取的最后一行保存到文本文件中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 2.7 MySQLdb将从数据库读取的最后一行保存到文本文件中相关的知识,希望对你有一定的参考价值。
我的任务是获取MySQL数据库以将数据发送到Salesforce并创建票证。我目前有python从数据库下载所需的表并将该信息保存到.xlsx表。然后我有另一个python脚本将数据上传到Google Doc表,然后是一个Javascript触发器,它将数据提交到salesforce,并且所有工作都按照我的预期运行。
我遇到的问题是,当它从MySQL中提取数据时,它会一次又一次地提取相同的信息,我需要它记住它最后一次抓取的最后一行或客户ID,将该ID或行保存到一个。 txt文件然后在下次脚本运行时拉出相同的数据,因此它从该行或ID开始,而不是从顶部再次开始。
任何帮助将不胜感激。
#!/usr/bin/python
import smtplib
import base64
import os
import sys
import csv
from xlsxwriter.workbook import Workbook
import xlwt
import MySQLdb
def sql_run():
ur = 'user' # your username
pd = 'password' # your password
ht = '192.168.1.10' # your host
pt = 3306
db = 'database' # database where your table is stored
#table = 'rma_customer' # table you want to save
con = MySQLdb.connect(user=ur, passwd=pd, host=ht, port=pt, db=db)
cursor = con.cursor()
query = "SELECT cus_id, cus_username FROM database.rma_customer"
query0 = "SELECT cus_firstname, cus_lastname, cus_cell_phone FROM database.rma_customer_details"
query1 = "SELECT cus_address_1 FROM database.rma_customer_address"
query2 = "SELECT cus_city, cus_postcode FROM database.rma_customer_address"
query3 = "SELECT regpro_model_type, regpro_buy_location, regpro_sn FROM database.rma_reg_product"
cursor.execute(query)
workbook = Workbook('outfile.xlsx')
sheet = workbook.add_worksheet("Warranty Info")
headers = ['ID', 'Email', 'FirstName', 'LastName', 'Phone', 'Street', 'City', 'Postal', 'Product', 'Store', 'SN']
for i, header in enumerate(headers):
sheet.write(0, i, header)
for r, row in enumerate(cursor.fetchall()):
r = r + 1
for c, col in enumerate(row):
sheet.write(r, c, col)
cursor.execute(query0)
for r, row in enumerate(cursor.fetchall()):
r = r + 1
for c, col in enumerate(row):
sheet.write(r, c+2, col)
cursor.execute(query1)
for r, row in enumerate(cursor.fetchall()):
r = r + 1
for c, col in enumerate(row):
sheet.write(r, c+5, col)
cursor.execute(query2)
for r, row in enumerate(cursor.fetchall()):
r = r + 1
for c, col in enumerate(row):
sheet.write(r, c+6, col)
cursor.execute(query3)
for r, row in enumerate(cursor.fetchall()):
r = r + 1
for c, col in enumerate(row):
sheet.write(r, c+8, col)
cursor.close ()
workbook.close()
con.close ()
sys.exit()
# exit the program
sql_run()
答案
- 在
row
you中添加table
从中提取信息。 - 拉
id
(第0行)作为唯一标识符 - 更新
row
,id
有True
或False
。 - 给你的查询一个
condition
,说行必须是True
/False
这样您就可以确保它停止迭代相同的信息。
编程方式:
query = "SELECT cus_id, cus_username FROM database.rma_customer WHERE row = 'True'"
...
data = cursor.execute(query)
for col in data:
id = col[0]
...
cursor.execute("""
UPDATE table
SET row= %s
WHERE id= %s
""", (row, id))
...
代表你的代码。我想不出你想放置代码片段的位置。
以上是关于Python 2.7 MySQLdb将从数据库读取的最后一行保存到文本文件中的主要内容,如果未能解决你的问题,请参考以下文章
Python AppEngine 'import MySQLdb' 不工作,OS X 10.9.2,python 2.7
如何在 Ubuntu 20.04 (Focal Fossa) 中为 Python 2.7 安装 python-mysqldb?