データベースがわからないので、MySQL
と仮定して回答します。
質問文にはデータベース、使用ドライバを書いてくださいな。
sql = "SELECT * FROM table1 WHERE FLG = 0 AND mail_ad = '%s'" % address " AND mail_date < '%d'" % newdate
1,SQLインジェクション
を防止するためにSQL
を文字列連結するのではなく、プレースホルダを使用してくださいな。
Python
1sql = 'SELECT * FROM table1 WHERE FLG = 0 AND mail_ad = %s AND mail_date < %s'
2cursor.execute(sql, (address, int(newdate)))
◇参考情報
MySQL Connector/PythonからSQLを投げる
2,ORDER BY
句を指定しない時SELECT
文は結果順序を保証しません。
ORDER BY
はできるだけ付けてくださいな。
3,データベースやカーソルのclose
忘れを防ぐためにcontextlib#closingを使用してくださいな。
データベース:MySQL
ドライバ:mysql.connector
のサンプルコードです、ご参考まで。
Python
1# -*- coding: utf-8 -*-
2from mysql.connector import connect
3from contextlib import closing
4
5def main() -> None:
6 config = {
7 'host': '127.0.0.1',
8 'database': 'XXXXXXX',
9 'user': 'XXXXXX',
10 'password': 'XXXXXX',
11 'charset' : 'utf8'
12 }
13 with closing(connect(**config)) as conn:
14 with closing(conn.cursor()) as cursor:
15 address = "bbbbbbbbb"
16 newdate = 20180706
17 sql = 'SELECT * FROM table1 WHERE FLG = 0 AND mail_ad = %s AND mail_date < %s'
18 cursor.execute(sql, (address, newdate))
19 for row in cursor.fetchall():
20 print(row)
21
22if __name__ == "__main__":
23 main()
24