[英]How can I pass “start date” and “end date” as command line arguments in Python
I am trying to transfer data from one table to another using Python based on date range. 我正在尝试根据日期范围使用Python将数据从一个表转移到另一个表。
import anprint
import os
import sys
import re
import datetime
from mydb import cursor
try:
cam_name = sys.argv[1]
rec_date = sys.argv[2]
except:
print "Usage: %s cam_name date " % sys.argv[0]
sys.exit(1)
dbObj = anprint.ExcelDb()
# Get a list of the plates...
tablename = "customer_1.%s_anpr_vega" % cam_name
sql = """SELECT plate, datetime, id FROM %s WHERE DATE(datetime)="%s" """ % (tablename, rec_date)
cursor.execute(sql)
retval = cursor.fetchall()
for values in retval:
print values
(vrm, vrm_datetime, record_id) = values
dbObj.reconcile_plate(cam_name, vrm, vrm_datetime, record_id)
1) It bad paractice: 1)不好的做法:
sql = """SELECT plate, datetime, id FROM %s WHERE DATE(datetime)="%s" """ % (tablename, rec_date)
cursor.execute(sql)
Do below: 请执行以下操作:
sql = """SELECT plate, datetime, id FROM %s WHERE DATE(datetime)=?""" % tablename
cursor.execute(sql, [rec_date])
2) It's simple and not good solution to use sys.argv[n]
for get command line arguments like cam_name = sys.argv[1]
. 2)使用
sys.argv[n]
来获取命令行参数(例如cam_name = sys.argv[1]
)是简单而不是好的解决方案。 Good way is to use argparse
for assign command line arguments to script. 好的方法是使用
argparse
为脚本分配命令行参数。
3) It's good practice use between
operator in sql like this: 3)最好在sql中的运算符
between
使用between
例如:
sql = "SELECT plate, datetime, id FROM " +tablename+ " WHERE datetime between ? and ?"
cursor.execute(sql, [start_date, end_date])
Furthermore read it for understanding parameters style SQL query. 进一步阅读它以了解参数样式的SQL查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.