0

在我的以下代码中,我试图附加到值的每个开头和结尾,以便我可以在运行我的 python 脚本后直接执行 SQL 插入操作。

以下是代码

print today,","+ (a['href'] if a else '`NULL`')+",", (a.string if a else 'NULL, NULL')+ "," +",".join(re.findall("'([a-zA-Z0-9,\s]*)'", (a['onclick'] if a else 'NULL, NULL, NULL, NULL, NULL, NULL')))+","+ ", ".join([project] + area),","+pdates+""

这是我的整个代码

我得到的输出。希望我清楚我想要什么。

4

2 回答 2

2

问题出在:

(a['href'] if a + '1' else '`NULL`') 

a是一个Tag类的实例,1是一个字符串。

我想你只需要一张if a支票:

(a['href'] if a else '`NULL`')

而且,仅供参考,最好使用字符串格式格式,而不是使用+.

而且,最好使用参数化的 sql 语句(参见sqlite3 文档):

query = """
INSERT INTO
    `property`
    (`date`,`Url`,`Rooms`,`place`,`PId`,`Phonenumber1`,`Phonenumber2`,`Phonenumber3`,`Typeofperson`,` Nameofperson`,`typeofproperty`,`Sq.Ft`,`PerSq.Ft`,`AdDate`,`AdYear`)
VALUES
    (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
"""

# define your field values as a list
values = [today, a['href'] if a else 'NULL', ... ]

# execute
cursor.execute(query, values)
于 2013-09-06T19:11:04.797 回答
1

转这个:

print today,","+ (a['href'] if a else '`NULL`')+",", (a.string if a else 'NULL, NULL')+ "," +",".join(re.findall("'([a-zA-Z0-9,\s]*)'", (a['onclick'] if a else 'NULL, NULL, NULL, NULL, NULL, NULL')))+","+ ", ".join([project] + area),","+pdates+""

进入这个:

# create your format string
keys = 'date', 'url', 'rooms',  # etc...
fmt_s = ', '.join('{{{key}}}'.format(key=key) for key in keys)
# yields: '{date}, {url}, ...'

# build up the necessary values
params = {'date': today}
params['url'] = a['href'] if a else '`NULL`'
params['rooms'] = a.string if a else 'NULL, NULL'

# etc...

# first format fills in the values from the dict
# second format adds the parens
print("({0})".format(fmt_s.format(**params)))

你能完成剩下的吗?

使用参数化 SQL 比手动构建字符串要好。

于 2013-09-06T19:38:13.440 回答