75060


mysql-connector-pythonで、同じレコードがあるかどうかを判定したいです。

環境  
・mysql（最新版）  
・python(3.9.1)  
・mysql-connector-python(最新版）

sql文には以下のような設定がされています。

[code]

    CREATE TABLE likes (
    tweet_number int NOT NULL,
    user_number int UNIQUE NOT NULL,
    like_time datetime DEFAULT NULL,
    primary key (tweet_number, user_number));
    
[/code]

python側では以下のようなコードにしています

[code]

    def like(interger, username):
        try:
            cursor.execute(
                'INSERT INTO likes (tweetnumber,username,liketime) values("{}","{}","{}")'.format(interger,
                                                                                              username,
                                                                                              datetime.datetime.today()))
            except mysql.connector.errors:
                cursor.execute('DELETE FROM likes where num = {}'.format(interger))
    
[/code]

エラー文です。

[code]

    TypeError: catching classes that do not inherit from BaseException is not allowed
    
[/code]

どのようにすれば、mysql-connector-pythonで同じレコードがあるかどうかを判定できますか？  
また、mysql-connector-pythonのdocumentはどこにありますか？

よろしくお願いします。


CC BY-SA 4.0
2021-04-02T06:54:08.867
75037
2021-04-03T06:58:50.387
2021-04-02T06:59:16.110
3060
37150
question
python mysql
mysql-connector-pythonで同じレコードがあるかどうかを判定するプログラムを書きたい


自己解決しました。mysql.connector.errors.IntegrityErrorをtryに設定すれば良いので、

[code]

    def like(interger, username):
        try:
            cursor.execute(
                'INSERT INTO likes (tweetnumber,username,liketime) values("{}","{}","{}")'.format(interger,
                                                                                                  username,
                                                                                                  datetime.datetime.today()))
        except mysql.connector.errors.IntegrityError:
            cursor.execute('DELETE FROM likes where num = {}'.format(interger))
    
[/code]

のようにすればいよかったです。  
ありがとうございます。


CC BY-SA 4.0
2021-04-03T06:58:50.387
75060
2021-04-03T06:58:50.387
37150
75037
answer